tutorial studio español con android security authentication facebook-login

studio - Mejores prácticas(mejores para Android): autentique a un usuario con Facebook o con el inicio de sesión de Google



login con facebook android studio (2)

Después de leer y preguntar, he llegado a esto:

1. Sí, si desea que sus usuarios se registren con su cuenta de Facebook o Google, llame a la API, obtenga la dirección de correo electrónico (es aún más fácil con el AccountManager de Google en Android), envíelo a su servidor que guardará la dirección de correo electrónico, asociará un ID de usuario y generará su propio código de acceso. El código de acceso se enviará de vuelta a su aplicación cliente para almacenarlo para su uso posterior. Cuando el usuario desee realizar algunas operaciones, se llamará a la API del servidor con la dirección de correo electrónico y el código de acceso del usuario, y puede estar seguro de que realmente es el usuario. Es mucho más difícil llamar al API desde fuera y adivinar correctamente tanto la dirección de correo electrónico como el código de acceso, por lo que es algo seguro.

2. Dado que el inicio de sesión de Facebook solo se utiliza para autenticar al usuario, lo que significa que solo se verifica que el usuario existe y tiene una cuenta, no necesitamos el acceso FB AccessToken. Necesitaríamos FB accessToken solo para llamadas a la API para el servidor de Facebook, por ejemplo, cuando deseamos recuperar una lista de amigos de los usuarios, etc. En este caso, puede obtener la sesión activa que proporciona el SDK de Facebook y obtener el AccessToken desde allí.

3. Este caso es de nuevo bastante simple. Si solo utiliza el inicio de sesión de Facebook para autenticar al usuario, no le importa si el usuario elimina su cuenta en el futuro. Después del primer inicio de sesión, guarda su dirección de correo electrónico, posiblemente una imagen y ya no le importa su perfil de Facebook. Si utiliza el inicio de sesión de Facebook para obtener una lista de amigos, etc. de todos modos, no guarde este tipo de datos en su almacenamiento local, por lo que, tan pronto como el usuario elimine su cuenta, también perderá su lista de amigos. O bien, puede mantener su lista de amigos e intentar actualizarla cada vez que use su aplicación y una vez que elimine su cuenta, la lista de amigos dejará de actualizarse y, de nuevo, depende de su usuario no usar la cuenta de Facebook. La última idea preferiría adaptarse a los casos de uso de las aplicaciones de juegos ... solo una idea, no nada aceptado oficialmente como el mejor.

Estoy desarrollando una aplicación con opciones de Facebook y Google para el inicio de sesión, así como un correo electrónico clásico + contraseña de inicio de sesión. Me estoy preguntando sobre varias cosas relacionadas con el inicio de sesión con API de terceros:

1. dado que un usuario puede iniciar sesión con su cuenta de Facebook y luego decidir cerrar sesión e iniciar sesión con su cuenta de Google, el usuario debe ser reconocido por su dirección de correo electrónico. Por lo tanto, cada vez que inicia sesión con una cuenta diferente, la dirección de correo electrónico se busca en la base de datos y, si se encuentra, se adjunta este nuevo inicio de sesión a la cuenta creada anteriormente. Solo aprueba este punto, por favor.

2. Si el usuario inicia sesión con el inicio de sesión de Facebook, puede obtener un accessToken, userId, correo electrónico del usuario, etc. ¿Cuál es la mejor práctica para autenticar al usuario para que siga siendo la forma más segura? ¿Debo enviar su dirección de acceso de Facebook y correo electrónico directamente al servidor? ¿Debería el servidor verificar con Facebook, si el accessToken realmente existe en Facebook? ¿Cuál es la mejor y más segura manera de generar un token de acceso privado a la aplicación en el lado del servidor? He escuchado algo sobre el hash MD5 ... ¿Debería usar solo este token de acceso recién generado en las llamadas a la API y no usar ninguna de las credenciales de Facebook? ¿O debería usar las credenciales de Facebook y así guardarlas en el lado del servidor / cliente? Voy a utilizar el motor de aplicaciones Java para el lado del servidor de mi aplicación.

3. ¿Qué pasa si el usuario borra su cuenta en Facebook? ¿Cómo sabrá la aplicación sobre esto? Si lo sabe, ¿qué debería hacer con la cuenta?

  1. ¿Debo verificar regularmente el token de acceso en Facebook si aún es válido? ¿Por qué y cómo y con qué frecuencia?

No estoy seguro de si estoy preguntando en el lugar correcto. Si me equivoco, por favor, redirígeme como debo ir, ¿quizás algunos enlaces sobre estas mejores prácticas? Hasta ahora, no he encontrado nada que responda a TODAS mis preguntas. Es tanto la codificación como la seguridad, supongo. Gracias por todos sus consejos y trucos.


  • 1 y 2

Puede hacerlo de varias maneras y depende de usted en la implementación, puede recibir su correo electrónico de cada hash de inicio de sesión y guardarlo como usuario en su base de datos. Luego, cualquier usuario que inicie sesión puede revisar el correo electrónico devuelto y verificar si ese hash ya existe.

También puede hacer que el usuario inicie sesión con un servicio y luego hacer que finalice la creación del usuario con nombre de usuario, contraseña de correo electrónico, etc. Luego, cuando intente iniciar sesión con un servicio diferencial, puede hacer que vuelva a registrarse. botón de cuenta, así como un enlace a una cuenta si intenta crear la misma cuenta dos veces.

Guarde los tokens asociados en una tabla de token de inicio de sesión de terceros vinculada a un usuario.

Recomiendo hashear todos los datos privados del usuario, le da más confianza a los usuarios con su aplicación

  • 3

Nunca me gusta confiar en cuentas de terceros y creo que el proceso de "terminar de crear su cuenta" crearía una mejor administración de la cuenta. Permitir a los usuarios iniciar sesión con terceros o con un nombre de usuario y contraseña.