2012-04-11 21 views
11

Estoy tratando de implementar un inicio de sesión con la funcionalidad facebook/twitter en mi aplicación, leo algunas guías sobre oAuth, y creo que entendí algo del concepto básico, y esto es lo que entendí (corríjanme si me equivoco):iniciar sesión con oAuth, ¿qué debo almacenar/usar para identificar al usuario?

  1. myApp envíe la solicitud al proveedor de oAuth, obtenga el token de la solicitud (A).
  2. enviar usuario para autenticar el (A), devuelve con (B) token de solicitud autenticada (¿esto se llama token oAuth?)
  3. use el (B) para obtener el token de acceso (C).
  4. use C para acceder a la información del usuario.

y esto es lo que no puedo entender, ¿cuál de estos debo usar/almacenar para identificar al usuario? Pensé en la posibilidad de usar cada uno de ellos, pero siempre estoy atascado en cómo verificar si el usuario ha iniciado sesión antes ...

Respuesta

10

Si todo lo que necesita es solo autenticación, entonces almacenar solo user_id es suficiente.

Por lo tanto crear otra mesa como:

id | service_name | user_id | my_user_id 

donde service_name es o bien twitter o facebook, user_id - es el id de usuario de Twitter/Facebook y my_user_id es un user_id en su sistema de autenticación.

Así:

SELECT my_user_id FROM oauths WHERE service_name = 'twitter' AND user_id = 42 

tendría que devolver el user_id sistema o nada

PS: service_name podría (y debería) ser normalizado, lo mantuve como una cadena sólo para simplificar un ejemplo

PPS: como dijo en los comentarios, probablemente desee "publicar/twittear".

En ese caso, debe almacenar el token de acceso del usuario para Twitter y no almacenar nada adicional para Facebook, pero solicite el permiso publish_stream al autenticar al usuario.

+0

Estaba pensando publicar/twittear también, pero por ID_usuario, ¿quería decir, almacenar el user_id que podemos obtener para acceder con el token de acceso? – hndr

+0

@that_guy: sip. El user_id del proveedor oauth – zerkms

+0

@that_guy: btw, se ha agregado a la publicación – zerkms

Cuestiones relacionadas