Estoy jugando con la autorización Oauth 2.0 en Facebook y me preguntaba si los tokens de acceso de Facebook caducan. Si es así, ¿hay alguna manera de solicitar un token de acceso de larga duración?
Estoy jugando con la autorización Oauth 2.0 en Facebook y me preguntaba si los tokens de acceso de Facebook caducan. Si es así, ¿hay alguna manera de solicitar un token de acceso de larga duración?
Respuestas:
Después de investigar un poco, encontré esto. Parece ser la respuesta:
Actualizado (11 / abril / 2018)
Anuncio de cambio de Facebook (10/04/2018)
Facebook actualizó la página de vencimiento del token (10/04/2018)
offline_access: permite que su aplicación realice solicitudes autorizadas en nombre del usuario en cualquier momento. De manera predeterminada, la mayoría de los tokens de acceso caducan después de un corto período de tiempo para garantizar que las aplicaciones solo realicen solicitudes en nombre del usuario cuando están utilizando activamente la aplicación. Este permiso hace que el token de acceso devuelto por nuestro punto final OAuth sea de larga duración.
Es un valor de permiso solicitado.
http://developers.facebook.com/docs/authentication/permissions
ACTUALIZAR
El permiso offline_access se eliminó hace un tiempo.
https://developers.facebook.com/docs/roadmap/completed-changes/offline-access-removal/
Prueba esto puede ser que te ayudará por completo
https://graph.facebook.com/oauth/authorize?
client_id=127605460617602&
scope=offline_access,read_stream,user_photos,user_videos,publish_stream&
redirect_uri=http://www.example.com/
Para obtener el token de acceso de por vida, debe usar scope=offline_access
El significado de scope=offline_access
es que: -
Permite que su aplicación realice solicitudes autorizadas en nombre del usuario en cualquier momento. De manera predeterminada, la mayoría de los tokens de acceso caducan después de un corto período de tiempo para garantizar que las aplicaciones solo realicen solicitudes en nombre del usuario cuando están utilizando activamente la aplicación. Este permiso hace que el token de acceso devuelto por nuestro punto final OAuth sea de larga duración.
Pero según la actualización futura de Facebook, la funcionalidad offline_acees quedará obsoleta para siempre a partir del 3 de octubre de 2012. Al usuario se le otorgará un token de acceso de larga duración de 60 días y antes de que caduque el token de acceso, Facebook le notificará o puede obtener su costumbre. funcionalidad de notificación que recupera el valor de vencimiento de la API de Facebook.
Tenga en cuenta que Facebook ahora está desaprobando el permiso offline_access a favor de los tokens para los que puede solicitar una "actualización" hasta el vencimiento. Ahora mismo estoy lidiando con esto, así que no tengo mucho más que decir, pero este documento puede ayudar:
https://developers.facebook.com/docs/offline-access-deprecation/
Vine aquí con la misma pregunta que el OP, pero las respuestas que sugieren el uso de offline_access me están dando señales de alerta.
En cuanto a la seguridad, obtener acceso sin conexión a la cuenta de Facebook de un usuario es cualitativamente diferente y mucho más poderoso que solo usar Facebook para el inicio de sesión único, y no debe usarse a la ligera (a menos que realmente lo necesite). Cuando un usuario otorga este permiso, "la aplicación" puede examinar la cuenta del usuario desde cualquier lugar en cualquier momento. Puse "la aplicación" entre comillas porque en realidad es cualquier herramienta que tenga las credenciales: puede crear un conjunto de herramientas que no tengan nada que ver con el servidor web y que puedan acceder a cualquier información que el usuario haya acordado compartir. cartas credenciales.
No usaría esta función para evitar una vida útil breve del token; ese no es su propósito previsto. De hecho, el token de por vida es una característica de seguridad. Todavía estoy buscando detalles sobre el uso adecuado de estos tokens (¿Puedo persistirlos? ¿Cómo / debo asegurarlos? ¿Facebook incrusta el "token de actualización" OAuth 2.0 dentro del principal? Si no, ¿dónde está? / o ¿cómo actualizo?), pero estoy bastante seguro de que offline_access no es la forma correcta.
Sí, caducan. Hay un valor 'caduca' que se pasa junto con 'access_token', y por lo que puedo decir, son aproximadamente 2 horas. He estado buscando, pero no veo una manera de solicitar un tiempo de vencimiento más largo.
dado que tuve el mismo problema, vea la excelente publicación sobre este tema de ben biddington, quien aclaró todos estos problemas con el token incorrecto y el tipo correcto para enviar las solicitudes.
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/
Siempre puede actualizar el token de acceso del usuario cada vez que el usuario inicia sesión en su sitio a través de Facebook. El acceso sin conexión no puede garantizarle que obtenga un token de acceso de por vida, el token de acceso cambia cada vez que el usuario revoca su acceso a la aplicación o el usuario cambia su contraseña.
Citado de facebook http://developers.facebook.com/docs/authentication/
Nota: Si la aplicación no ha solicitado permiso offline_access, el token de acceso tiene un límite de tiempo. El token de acceso con límite de tiempo también se invalida cuando el usuario cierra sesión en Facebook. Si la aplicación ha obtenido el permiso offline_access del usuario, el token de acceso no tiene vencimiento. Sin embargo, se invalida cuando el usuario cambia su contraseña.
Supongamos que almacena el usuario de Facebook del usuario y el token de acceso en una tabla de usuarios en su base de datos, cada vez que el usuario hace clic en el botón "Iniciar sesión con Facebook", verifica el estado de inicio de sesión con la API de Facebook Javascript y luego examina el estado de conexión de la respuesta , si el usuario se ha conectado a su sitio, puede actualizar el token de acceso en la tabla.
inicie sesión en la cuenta de Facebook y edite la configuración de su aplicación (cuenta -> configuración de la aplicación -> permiso adicional de la aplicación que utiliza su cuenta). desmarque el permiso (Acceda a mis datos cuando no esté usando la aplicación (offline_access)). Luego, face reservará un nuevo token cuando inicie sesión en la aplicación.
Básico el token de Facebook caduca aproximadamente en una hora. Pero puede usar el token de 'intercambio' para obtener un token de larga duración https://developers.facebook.com/docs/facebook-login/access-tokens
GET /oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
fb_exchange_token={short-lived-token}
Verifique las siguientes cosas cuando interactúa con la API gráfica de Facebook.
1) La URL de conexión de la aplicación debe ser la base de su URL de conexión "redirect_uri": - www.x-minds.org/fb/connect/ redirect_uri - www.x-minds.org/fb/connect/redirect 2) Su "redirect_uri "debe ser el mismo en ambos casos (cuando solicita un código de verificación y un access_token) redirect_uri - www.x-minds.org/fb/connect/redirect 3) debe codificar el argumento cuando solicita un access_token 4) no debe pasar el argumento (type = client_cred) cuando solicita un access_token. el servidor de autorización emitirá un token sin parte de sesión. No podemos usar este token con el alias "yo" en la API gráfica. Este token tendrá una longitud de (40) pero un token con parte de sesión tendrá una longitud de (81). Un token de acceso sin parte de sesión funcionará con algunos casos
por ejemplo: - https://graph.facebook.com/ ? access_token = 116122545078207 | EyWJJYqrdgQgV1bfueck320z7MM. Pero Graph API con alias "yo" funcionará solo con token con parte de sesión.
No sé cuándo caducan exactamente los tokens, pero lo hacen, de lo contrario no habría una opción para otorgar permisos sin conexión.
De todos modos, a veces exigir al usuario que otorgue permisos fuera de línea es una exageración. Dependiendo de sus necesidades, tal vez sea suficiente que el token siga siendo válido siempre que el sitio web esté abierto en el navegador del usuario. Para esto puede haber una solución más simple: volver a registrar al usuario periódicamente usando un iframe: reingreso automático de Facebook desde cookie php
Trabajó para mi...
Esto es justo unos años más tarde, pero el Explorador de API de gráficos de Facebook ahora tiene un pequeño símbolo de información junto al token de acceso que le permite acceder a la aplicación de herramienta de token de acceso y extender el token API por un par de meses. Puede ser útil durante el desarrollo.