Mode le moins invasif pour identifier de manière unique l'utilisateur Android

Comment pouvez-vous identifier un utilisateur qui a installé votre application de sorte que:

  1. Vous saurez que c'est eux s'ils suppriment et réinstallent votre application;
  2. Vous saurez que c'est eux s'ils installent votre application sur un deuxième appareil qu'ils ont l'intention d'utiliser simultanément?

À titre d'exemple, je vois que l'application Netflix se liera automatiquement à votre compte de bureau sans aucune interaction avec l'utilisateur. Je suppose qu'ils utilisent accountManager.getAccounts() ou une méthode similaire, car ils exigent également l'autorisation GET_ACCOUNTS . Mais bien sûr, l'autorisation est marquée comme Protection level: dangerous . Existe-t-il une technique qui soit moins invasive ou potentiellement alarmante?


La clé pour répondre à cette question est à la fois simple (pour l'utilisateur) et peu invasive. Android fournit des exemples de moyens d'identifier les utilisateurs et de nombreuses façons impliquent de percer la vie privée d'un utilisateur, et si c'est la seule façon, je ferai ce que je fais maintenant (inscription facultative au courrier électronique). Je souhaite simplement que mon application soit connue si un utilisateur est déjà enregistré dans mon système à travers des installations sans avoir à interviewer l'utilisateur (nom d'utilisateur / mot de passe, adresse e-mail, OAuth tiers, etc.).

Mes principales raisons sont les suivantes:

  1. Je ne souhaite pas de demandes de soutien des utilisateurs qui ont perdu leur contenu après une réinstallation; et
  2. Je ne souhaite pas héberger beaucoup de contenu orphelin.

6 Solutions collect form web for “Mode le moins invasif pour identifier de manière unique l'utilisateur Android”

Consultez l' authentification Firebase . C'est tout à fait homogène et ne nécessite pas beaucoup d'efforts pour l'incorporer. En outre, il ne se sent pas intrusif ou encombrant pour l'utilisateur final.

Voici un tutoriel vidéo de Google.

EDIT: Si vos utilisateurs sont sûrs d'avoir un appareil cellulaire avec un numéro de téléphone, vous pouvez utiliser AccountKit . C'est aussi ce qu'ils appellent OTA (One Time Authentication). AccountKit utilise uniquement le numéro de téléphone des utilisateurs pour vérifier et valider les utilisateurs.

J'ai implémenté quelque chose qui semble peu similaire à votre chose par notification push, je peux obtenir une erreur si l'utilisateur a désinstallé mon application (et à partir de l'identifiant d'enregistrement, je reçois l'utilisateur) et s'il a réinstallé, il obtient un nouvel identifiant d'enregistrement et essayez Pour obtenir l'UUID utilisateur pour différents appareils

Je pense que la façon la plus simple serait d'utiliser l'UUID et de stocker le hash sur SharedPreferences. Vous devez générer l'UUID le plus tôt possible dans votre application.

 sharedPrefs = context.getSharedPreferences(APP_SHARED_PREFS,Activity.MODE_PRIVATE); if (sharedPrefs.getString("YOUR-KEY-TO-THE-UUID") == null || "".equals(sharedPrefs.getString("YOUR-KEY-TO-THE-UUID"))){ prefsEditor = sharedPrefs.edit(); prefsEditor.putString("YOUR-KEY-TO-THE-UUID", UUID.randomUUID().toString()); prefsEditor.commit(); } 

Je pense que la meilleure façon serait d'implémenter la connexion avec Google ou Facebook . Ceci est tout à fait transparent pour les utilisateurs, assez sûr (car Google et Facebook sont considérés comme approuvés), vous n'avez pas besoin de mettre en œuvre votre inscription par courrier électronique et vous aurez une identité à travers les périphériques.

Si votre application est uniquement Android et que vous souhaitez fournir une identité sans aucune création de compte pour l'utilisateur, je crois que l'utilisation de Google Account name / id est le meilleur choix ( Accès à Google Account Id / nom d'utilisateur via Android ) car vous devez utiliser Google Compte sur un téléphone Android (à moins que vous ne le raciez, supprimez Google Play Services, etc.).

Si vous souhaitez uniquement aborder le premier point de votre question (identifier après la réinstallation), il existe un Device Id – Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); Bien qu'il ne soit pas 100% fiable (fe Factory Reset réinitialise cette valeur)

La norme pour atteindre ce type de fonctionnalité est l'utilisation de jetons Web JSON (JWT) en conjonction avec un trafic d'api reposant sur la norme.

En supposant que votre application Android interagit avec un api RESTful pour toutes les opérations en mode brut et la logique métier, alors utiliser un JWT comme identifiant d'authentification pour votre api peut fonctionner assez bien. Vous pouvez intégrer des informations dans chaque JWT vous permettant d'identifier ce que vous voulez (l'identifiant de l'utilisateur dans la base de données, l'identifiant du périphérique de l'utilisateur connecté, etc.). Un JWT est essentiellement une structure de données vous permettant de stocker des informations à utiliser par l'API.

Quelques bases de la façon dont cela fonctionne:

  1. Obtenir le JWT dans l'application : un utilisateur se connecte à l'application en utilisant leur nom d'utilisateur / mot de passe. L'api retourne alors un JWT crypté pour être utilisé par le client pour toutes les demandes futures. N'essayez pas de faire le cryptage vous-même. Toute langue qui peut gérer le service d'un api aura des bibliothèques pour cela.
  2. Utilisation de l'information dans le JWT : Le JWT est lui-même une structure de données. Par exemple, cela pourrait ressembler à ceci:

    { user_id: 1, device_id: 44215, device_os: android, }

    Votre api déchrit le JWT lorsqu'il est fourni pour l'authentification via l'en-tête de la requête, puis disposez de cette information dans le contexte de la session.

Si vous fournissez la langue utilisée par votre api, je pourrai recommander une bibliothèque.

Je conclurai en me référant à l'exigence finale que vous avez soumise, qui stipule essentiellement que vous ne voulez pas avoir à interviewer l'utilisateur à travers les installations. Si je comprends votre sens, vous souhaitez que l'utilisateur puisse simplement installer l'application et commencer à l'utiliser sans fournir d'informations d'authentification, alors il n'y a aucun moyen de le réaliser en toute sécurité. Vous pourriez peut-être trouver un moyen de hacking pour le faire fonctionner, mais ce sera fondamentalement peu sûr.

coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.