válidos usar redireccionamiento para modo lista estricto desactivar configuración cliente blanca acceso facebook facebook-graph-api oauth oauth-2.0

usar - Token de acceso de Facebook: flujos del lado del servidor frente al lado del cliente



uri de redireccionamiento de oauth válidos facebook (4)

Documentos de Facebook :

La plataforma Facebook admite dos flujos diferentes de OAuth 2.0 para el inicio de sesión del usuario: el lado del servidor (conocido como el flujo del código de autenticación en la especificación) y el lado del cliente (conocido como el flujo implícito). El flujo del lado del servidor se usa siempre que necesite llamar a Graph API desde su servidor web. El flujo del lado del cliente se usa cuando necesita hacer llamadas a Graph API desde un cliente, como JavaScript ejecutándose en un navegador web o desde una aplicación móvil o de escritorio nativa.

¿Cuál es la diferencia entre los tokens de acceso tomados por estos flujos? Parece que su longitud difiere.

¿Podemos usar token de flujo del lado del servidor en un cliente? Y, de lo contrario, ¿podemos usar el token de flujo del lado del cliente en un servidor?


Para aquellos que como yo enfrentamos el mismo problema en 2014, Facebook mejoró la documentación sobre los tokens de acceso.

Los tokens son portátiles

Un aspecto importante para comprender sobre el token de acceso es que son portátiles. Una vez que tenga un token de acceso, puede usarlo para hacer llamadas desde un cliente móvil, un navegador web o desde su servidor a los servidores de Facebook. Si se obtiene un token en un cliente, puede enviar ese token nuevamente a su servidor y usarlo en llamadas de servidor a servidor. Si se obtiene un token a través de una llamada al servidor, también puede enviar ese token a un cliente y luego realizar las llamadas desde el cliente.

(de https://developers.facebook.com/docs/facebook-login/access-tokens/#portabletokens )

Entonces, sí, puede usar tokens de acceso del cliente en el servidor y viceversa; como ya se indicó en el navegador, la diferencia es que los tokes obtenidos por el cliente son de corta duración, mientras que los del servidor son de larga vida. También puede convertir un token de corta vida a un token de larga duración siguiendo las instrucciones aquí: https://developers.facebook.com/docs/facebook-login/access-tokens/#extending


Actualmente, Facebook dice esto sobre access_tokens. En el servidor OAuth

si el access_token se genera desde una llamada OAuth del lado del servidor, el access_token resultante tendrá el tiempo de expiración más largo de forma predeterminada . Si la llamada se realiza mientras todavía hay un usuario de larga duración válido access_token para ese usuario, el usuario devuelto access_token de esta segunda llamada puede ser el mismo o puede haber cambiado, pero en cualquier caso el tiempo de caducidad se establecerá en un largo Tiempo de expiración.

Donde, como flujo de OAuth del lado del cliente, obtendrá un usuario existente, no caducado, de corta vida access_token . Para que este access_token sea de larga vida, Facebook ofrece un nuevo punto final que intercambia el acceso de corta duración access_token con un access_token con una vida más larga. El punto final es

https://graph.facebook.com/oauth/access_token? client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN

También tenga en cuenta que

Actualmente, el usuario de larga duración access_token tendrá una validez de 60 días, mientras que el usuario efímero access_tokens es actualmente válido de 1 a 2 horas.

Extracto de https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/


El token se puede usar para hacer llamadas a la API, ya que representa que usted está autenticado y autorizado para hacer algo.

El código no se puede usar directamente para realizar llamadas a la API. Primero debe canjearse con el secreto de su aplicación para obtener un token .

En otras palabras, el código es como un token cifrado que solo las partes con la aplicación secreta pueden descifrarlo.

Por cierto, el secreto de su aplicación solo debería aparecer en su código de servidor, nunca en un cliente móvil o web.

El video básicamente explica todo esto alrededor de las 13:00 https://developers.facebook.com/docs/facebook-login/security


Un token de acceso de usuario (y token de acceso a la página ) será el mismo en el entorno del lado del servidor o del lado del cliente (que no sea para la caducidad de la marca de tiempo).

Un token de acceso a la aplicación será exactamente el mismo, ya sea del lado del servidor o del lado del cliente.