Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


La forma menos invasiva de identificar de forma exclusiva al usuario de Android

¿Cómo puede identificar de forma exclusiva a un usuario que ha instalado su aplicación para que:

  1. Usted sabrá que es ellos si eliminan y vuelven a instalar su aplicación;
  2. Usted sabrá que es ellos si instalan su aplicación en un segundo dispositivo que tienen la intención de utilizar simultáneamente?

Como ejemplo, veo que la aplicación Netflix se vinculará automáticamente a su cuenta de escritorio sin ninguna interacción del usuario. Supongo que utilizan accountManager.getAccounts() o un método similar, porque también requieren el permiso GET_ACCOUNTS . Pero por supuesto que el permiso está marcado como Protection level: dangerous . ¿Hay alguna técnica para hacer esto que sea menos invasiva o potencialmente alarmante?


La clave para responder a esto es ser simple (para el usuario) y mínimamente invasivo. Android proporciona montones de maneras de identificar a los usuarios y muchas de esas formas implican perforar la privacidad de un usuario, y si esa es la única manera, haré lo que hago ahora (registro de correo electrónico opcional). Sólo quiero una forma de que mi aplicación sepa si un usuario ya está registrado en mi sistema en instalaciones sin tener que entrevistar al usuario (nombre de usuario / contraseña, dirección de correo electrónico, OAuth de terceros, etc.).

Mis razones principales son:

  1. No quiero recibir solicitudes de soporte de los usuarios que han dejado huérfano a su contenido después de reinstalarlo; y
  2. No quiero recibir mucho contenido huérfano.

    6 Solutions collect form web for “La forma menos invasiva de identificar de forma exclusiva al usuario de Android”

    Echa un vistazo a la autenticación Firebase . Es muy transparente y no requiere mucho esfuerzo para incorporar. También no se siente intrusivo o engorroso para el usuario final.

    Aquí hay un tutorial de vídeo de Google.

    EDIT: En caso de que sus usuarios estén seguros de tener un dispositivo celular con un número de teléfono, puede utilizar AccountKit . También es lo que ellos llaman OTA (One Time Authentication). AccountKit utiliza sólo el número de teléfono de los usuarios para verificar y validar a los usuarios.

    He implementado algo que parece poco similar a tu cosa por notificación push, puedo obtener error si el usuario desinstalado mi aplicación (y de la identificación de registro que obtener el usuario), y si está instalado, obtener un nuevo registro de identificación, y tratar Para obtener el usuario UUID para diferentes dispositivos

    Creo que la forma más sencilla sería usar UUID y almacenar el hash en sharedPreferences. Debe generar el UUID lo antes posible en su aplicación.

     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(); } 

    Creo que la mejor manera sería la implementación de inicio de sesión con Google o Facebook . Esto es bastante transparente para los usuarios, lo suficientemente seguro (como Google y Facebook se considera de confianza), no es necesario implementar su registro de correo electrónico y tendrá identidad entre dispositivos.

    Si tu aplicación es Android solamente y quieres proporcionar identidad sin crear una cuenta para el usuario, creo que usar el nombre / ID de la cuenta de Google es la mejor opción ( acceder al ID de cuenta de Google / nombre de usuario a través de Android ) ya que tienes que usar Google Cuenta en el teléfono Android (a menos que lo root, elimine Google Play Services, etc.).

    Si desea sólo abordar el primer punto de su pregunta (identificar después de reinstalar), hay un Id de dispositivo: Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID); Aunque no es 100% fiable (fe Factory Reset restablece este valor)

    El estándar para lograr este tipo de funcionalidad es a través del uso de fichas web JSON (JWT) en conjunto con el tráfico api estándar de descanso.

    Suponiendo que su aplicación android interactúa con una api RESTful para todas las operaciones cruciales y lógica de negocios, a continuación, utilizando un JWT como un identificador de autenticación para su api puede funcionar bastante bien. Puede integrar información en cada JWT lo que le permite identificar lo que quiera (el ID de usuario en la base de datos, el id de dispositivo de donde el usuario ha iniciado sesión, etc). Un JWT es esencialmente una estructura de datos que le permite almacenar información para ser utilizada por la API.

    Algunos conceptos básicos de cómo funciona esto:

    1. Cómo obtener el JWT en la aplicación : Un usuario inicia sesión en la aplicación utilizando su nombre de usuario / contraseña. A continuación, la api devuelve un JWT encriptado para ser utilizado por el cliente para todas las solicitudes futuras. No trate de hacer el cifrado usted mismo. Cualquier idioma que pueda manejar el servicio de una api tendrá bibliotecas para esto.
    2. Uso de la información en el JWT : El JWT es en sí mismo una estructura de datos. Por ejemplo, podría verse así:

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

      Su api descifrará el JWT cuando se suministre para la autenticación a través del encabezado de solicitud, y luego tendrá esa información disponible en el contexto de la sesión.

    Si usted proporciona el lenguaje utilizado por su api entonces podría ser capaz de recomendar una biblioteca.

    Terminaré refiriéndome al requisito final que usted sometió que indica esencialmente que usted no desea tener que entrevistar al usuario a través de instala. Si entiendo su significado, que desea que un usuario pueda simplemente instalar la aplicación y comenzar a usarla sin proporcionar credenciales de autenticación, entonces no hay manera de lograrlo de forma segura. Usted podría ser capaz de llegar con una manera de hackear para que funcione, pero será fundamentalmente inseguro.

      FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.