2012-09-10 18 views
5

Como Facebook está eliminando el permiso de acceso sin conexión, quiero seguir adelante y migrar nuestro sitio web para usar el nuevo sistema.¿Cómo se obtienen los tokens de acceso de larga duración de la API Graph de Facebook (autenticación del lado del servidor)?

me encontré con este documento en la página web de Facebook: https://developers.facebook.com/roadmap/offline-access-removal

Sin embargo, cuando proceso a alguien con la autenticación del lado del servidor, consigo esta respuesta:

access_token => BLAHBLAHBLAHdontusemytokensilly 
expires => 4992 

Cuando intento utilizar el punto de acceso (en ese documento) para ampliar el acceso de ficha más de un par de horas, me sale esto de nuevo:

access_token => BLAHBLAHBLAHdontusemytokensilly 
expires => 4990 

Según ese documento, OAuth del lado del servidor debería recibir un token que dura 60 días, no entiendo por qué no lo estoy recuperando.

Realmente no quiero enviar a nuestros usuarios a través del redireccionamiento de OAuth cada 2 horas.

¿Alguna idea? ¡Gracias!

ACTUALIZACIÓN

Conforme a lo solicitado, aquí es el flujo que estoy tomando (en el navegador):

En primer lugar me redirige al usuario aquí:

https://www.facebook.com/dialog/oauth?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&scope=user_about_me%2Cuser_events%2Cuser_interests%2Cuser_likes%2Cfriends_likes%2Cuser_location%2Cuser_status%2Cuser_subscriptions%2Cfriends_subscriptions%2Cemail%2Ccreate_event%2Cpublish_stream%2Crsvp_event%2Cpublish_actions%2Cuser_actions.music%2Cfriends_actions.music%2Cuser_actions.news%2Cfriends_actions.news%2Cuser_actions.video%2Cfriends_actions.video%2Cmanage_pages

Este redirige al usuario a aquí:

http://localhost/user-social/facebook/redirect?code=BLAHBLAHBLAHsomeawesomecode#_=_ 

me pidió entonces un token de acceso de este modo:

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&code=BLAHBLAHBLAHsomeawesomecode

recibo este reposo de Facebook:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=4057 

Ésta es Obviosly un token de corta duración. De acuerdo con la documentación de Facebook (arriba), debería haber recibido un token de larga duración (ya que estoy usando el OAuth del lado del servidor).

Sin embargo, ya que es de corta duración, he tratado de cambiarla por una larga vida token:

https://graph.facebook.com/oauth/access_token?client_id=BLAHBLAH&redirect_uri=http%3A//localhost/user-social/facebook/redirect&client_secret=BLAHBLAHsomeawesomesecret&grant_type=fb_exchange_token&fb_exchange_token=BLAHBLAHBLAHdontusemytokensilly

Esto es lo que volvió Facebook:

access_token=BLAHBLAHBLAHdontusemytokensilly&expires=3967 

La misma señal_acceso está siendo devuelto en ambas solicitudes.

ACTUALIZACIÓN 2

pongo el token de acceso arriba en el Facebook Debugger y esto es lo que ha devuelto:

App ID: 
BLAHBLAH 
User ID:  
211800900 : David Barratt 
Issued: 
Unknown 
Expires:  
1347303600 (in 40 minutes) 
Valid: True 
Origin: Web 
Scopes: create_event create_note email friends_actions.music friends_actions.news friends_actions.video friends_likes friends_subscriptions manage_pages photo_upload publish_actions publish_stream rsvp_event share_item status_update user_about_me user_actions.music user_actions.news user_actions.video user_events user_interests user_likes user_location user_status user_subscriptions video_upload 

ACTUALIZACIÓN 3

Después de borrar todos mis permisos y volver a autorizar la aplicación (como @phwd sugirió). Las Facebook API muestra esto:

access_token=BLAHBLAHBLAHdontusemytokensilly 

¿Quiere esto decir que he sido devuelto el señal_acceso de larga duración? si es así, ¿dónde está la caducidad?

ACTUALIZACIÓN 4

Cuando ejecuto el señal_acceso arriba a través del Facebook depurador, me sale el siguiente resultado:

App ID: 
BLAHBLAH 
User ID:  
211800900 : David Barratt 
Issued: 
1347309538 (39 minutes ago) 
Expires:  
Never 
Valid: True 
Origin: Web 
Scopes: create_event create_note email friends_actions.music friends_actions.news friends_actions.video friends_likes friends_subscriptions manage_pages photo_upload publish_actions publish_stream rsvp_event share_item status_update user_about_me user_actions.music user_actions.news user_actions.video user_events user_interests user_likes user_location user_status user_subscriptions video_upload 

Esto parece solucionar el problema original, pero es extraño que los access_tokens son indefinidos en lugar de durar los 60 días prescritos.

¿Alguna idea sobre por qué podría ser así?

Respuesta

2

No estoy seguro si la conoce. Pero el token de acceso solo se renovará una vez al día, sin importar cuántas veces el usuario inicie sesión en su aplicación.

Ver: https://developers.facebook.com/roadmap/offline-access-removal/

+2

esto es irrelevante, ya que el largo el token de acceso de larga duración debe durar 60 días (la pregunta que publiqué dice que solo dura unas horas). –

1

Desde que Facebook es la eliminación de la autorización offline_access, yo quiero ir por delante un migrar nuestro sitio web para utilizar el nuevo sistema.

Asegúrese habilitó "Eliminar offline_access permiso" en la configuración avanzada de su aplicación

Advanced settings

Si es así, usted podría estar golpeando un error https://developers.facebook.com/bugs/378106708911903

+0

Puedo confirmar que el "Eliminar permiso de acceso fuera de línea" está establecido en "Activado". –

+0

Además, esta no es una aplicación de lienzo, este es un sitio web, por lo que no estoy seguro de si se aplica el error. –

+0

@DavidBarratt Ha revocado los permisos con 'HTTP DELETE/me/permissions' y reintentando, entonces puede no estar limitado a aplicaciones de canvas solamente. – phwd

Cuestiones relacionadas