¿Los tokens de acceso de Facebook Oauth 2.0 caducan?

Estoy jugando con la autorización de Oauth 2.0 en Facebook y me preguntaba si los tokens de acceso de Facebook se vencieron. Si es así, ¿hay alguna manera de solicitar un token de acceso de larga duración?

Después de cavar un poco, encontré esto. Parece ser la respuesta:

Actualizado (11 / abril / 2018)

  • El token caducará después de aproximadamente 60 días.
  • El token se actualizará una vez por día, hasta por 90 días, cuando la persona que usa su aplicación haga una solicitud a los servidores de Facebook.
  • Todos los tokens de acceso deben renovarse cada 90 días con el consentimiento de la persona que usa su aplicación.

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 usando 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 ha sido eliminado hace un tiempo.

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

Prueba esto, puede ser, 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 eso: –

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 usando activamente la aplicación. Este permiso hace que el token de acceso devuelto por nuestro punto final OAuth sea de larga duración.

Pero de acuerdo con la actualización futura de Facebook, la funcionalidad offline_acees quedará obsoleta para siempre desde el 3 de octubre de 2012. El usuario recibirá un token de acceso de larga duración de 60 días y antes de que caduque el token de acceso de Facebook lo notificará o podrá obtener su versión personalizada. funcionalidad de notificación recuperando 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 cuales puede solicitar una “actualización” al vencimiento. Ahora mismo estoy lidiando con esto, así que no tengo mucho más para 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 están levantando banderas rojas para mí.

En términos de seguridad, obtener acceso sin conexión a la cuenta de Facebook de un usuario es cualitativamente diferente y mucho más poderoso que simplemente 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. Pongo “la aplicación” entre comillas porque en realidad es cualquier herramienta que tenga las credenciales: podría crear un conjunto completo de herramientas que no tienen nada que ver con el servidor web que pueda acceder a la información que el usuario acordó compartir con los usuarios. cartas credenciales.

No usaría esta característica para trabajar en una vida útil de token corta; ese no es su propósito. De hecho, la vida útil de Token es una característica de seguridad. Todavía estoy buscando detalles sobre el uso correcto de estos tokens (¿Puedo persistir? ¿Cómo puedo / debo protegerlos? ¿Facebook incrusta el OAuth 2.0 “token de actualización” dentro del principal? En caso negativo, ¿dónde está y dónde está? / o ¿cómo puedo actualizar?), pero estoy bastante seguro de que offline_access no es el camino correcto.

Sí, caducan. Hay un valor ‘expira’ que se transfiere junto con ‘access_token’, y por lo que puedo decir, es de aproximadamente 2 horas. He estado buscando, pero no veo una manera de solicitar un tiempo de vencimiento más largo.

dado que tenía el mismo problema, consulte la excelente publicación sobre este tema de ben biddington, quien aclaró todos estos problemas con el token equivocado 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 garantizar que obtenga un token de acceso de larga duración, el token de acceso cambia siempre que el usuario revoque el acceso a la aplicación o el usuario cambie su contraseña.

Citado de Facebook http://developers.facebook.com/docs/authentication/

Nota: Si la aplicación no ha solicitado el permiso offline_access, el token de acceso tiene un límite de tiempo. El token de acceso limitado en el 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 un vencimiento. Sin embargo, se invalida cada vez que el usuario cambia su contraseña.

Supongamos que almacena el token de usuario y acceso de Facebook 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”, comprueba el estado de inicio de sesión usando la API JavaScript de Facebook 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.

Pulse esto para intercambiar un token de acceso de vida corto por uno de vida larga / sin vencimiento (páginas):

 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 

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 usa su cuenta). desmarque el permiso (Acceda a mis datos cuando no esté usando la aplicación (offline_access)). A continuación, la cara emitirá un nuevo token cuando inicie sesión en la aplicación.

Básico, el token de Facebook caduca aproximadamente en una hora. Pero puedes usar el token ‘exchange’ 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} 

compruebe las siguientes cosas cuando interactúa con facebook graph api.

1) La URL de conexión de aplicación debe ser la base de su URL de conexión “redirect_uri”: – http://www.x-minds.org/fb/connect/redirect_urihttp://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 solicita un access_token) redirect_uri – http://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 solicite access_token. el servidor de autorización emitirá un token sin parte de sesión. no podemos usar esta ficha con el alias “me” en la API api. Este token tendrá una longitud de (40) pero un token con la 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 “me” alias 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 fuera de línea.

De todos modos, a veces es necesario que el usuario otorgue permisos fuera de línea. Dependiendo de sus necesidades, tal vez sea suficiente que el token siga siendo válido siempre y cuando el sitio web se abra en el navegador del usuario. Para esto, puede haber una solución más simple: volver a marcar al usuario de forma periódica mediante un iframe: Facebook volver a iniciar sesión automáticamente desde cookie php

Trabajó para mi…