Pregunta

He estado usando la API del gráfico de Facebook (usa OAUTH 2.0 para la autenticación) con éxito por un tiempo. Ahora necesito escribir mi propia API, que permite a los desarrolladores conectarse con ella de manera similar. He mirado a varias bibliotecas, pero me gustaría algo un poco más delgado, así que he decidido rodar la mía. Mirando el código Tengo que autenticar a un usuario en Facebook, se ve relativamente simple, pero por favor corríjame si me voy a salir.

Primero necesitaría proporcionar una página segura que el consumidor necesitaría redirigir. por ejemplo, https://api.mydomain.com/oauth/authorize?client_id=consumer_key& redirect_url= callback_url . El usuario verificaría la solicitud, entonces me redirría a la URL proporcionada en la URL de devolución de llamada con el OAUTH_TOKEN en la cadena de consulta. Supongo que podría generar una cadena única aleatoria aquí para el OAUTH_TOKEN y almacenarlo contra el usuario de este consumidor en particular (Editar: consulte la respuesta a continuación, esto debe ser único para cada aplicación de consumidor y no al usuario).

Eso es el paso 1 de la manera. Ahora necesito proporcionar una segunda página segura que el consumidor desencadenaría una solicitud web. por ejemplo, https://api.mydomain.com/oauth/access_token?client_id= Consumer_key & client_secret= consumer_secret & oauth_token= oauth_token_returned_above . Esto permitiría que el consumidor intercambio el OAUTH_TOKEN, que se devolvió anteriormente para un token de acceso. De nuevo, simplemente generaría una cadena única aleatoria y lo guardaría contra el usuario de este consumidor en particular.

Ahora, mi API aceptaría el Access_Token para los métodos que intentan obtener información específica para el usuario que lo está utilizando.

Me gustaría saber si he entendido las cosas correctamente. La especificación OAUTH 2.0 parece extremadamente trivial si ese es el caso. Además, ¿por qué tenemos que intercambiar el OAUTH_TOKEN con un Access_Token? Tengo mi propia idea, pero lo apreciaría si alguien pudiera ayudar a aclarar esto.

Realmente apreciaría sus comentarios, ya que no deseo seguir adelante y perder horas implementando esto cuando está completamente equivocado.

gracias

¿Fue útil?

Solución

En realidad, los diagramas de flujo de protocolos serían extremadamente útiles para visualizar las especificaciones como la de OAUTH 2, pero solo hay algunos parciales que funcionan allí. Como acabo de implementar una biblioteca de un lado del cliente, puedo verificar que esté en el camino correcto. Pero aquí hay una captura:

oauth_token pertenece a la aplicación de su cliente (es decir, un lector de Facebook de escritorio) que autentica su aplicación (al igual que una ID). Usted envía esto para recuperar un Access_Token, que es específico de su solicitud y ha iniciado sesión en el usuario, que le permite acceder a los recursos restringidos relacionados con el usuario.

Aquí hay un proceso básico de autenticación de la aplicación de escritorio (tomada de: http://developers.gigya. com / 020_developer_guide / 85_rest / oauth2 )

resto oauth 2.0

En realidad, un digrama de flujo con línea de tiempo (de arriba a abajo, tomada de: http://www.ibm.com/developerworks/web/library/wa-oauthsupport/?ca=drs- )

Flujo de protocolo

y finalmente el procedimiento completo es: (tomado de http://h2anetwork.org/projectdocs/ Dpi / dpi_framework.html )

OAUTH Protocol Flow

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top