2012-08-28 24 views
8

Objetivo principal: ¿Cómo puedo obtener un token de acceso con validez ilimitada para una aplicación de Facebook?¿Cómo obtener un token de acceso a Facebook de larga duración?

Antecedentes

Tenemos una aplicación FB llamado MiApl con la siguiente configuración:

  • MiApl está autorizado para interactuar con nuestra aplicación de Facebook
  • MiApl tiene derechos de acceso para gestionar nuestra páginas (manage_pages)
  • MyApp tiene acceso a Insights (read_insights)

Nuestro objetivo es extraer los datos de Insights automáticamente, p. una vez por noche

Intento con oauth generado aplicación contador

  1. Get APP_ACCESS_TOKEN perteneciente a MyAPP

    graph.facebook.com/oauth/access_token?client_id=YOUR_APP_ID & client_secret = YOUR_APP_SECRET & grant_type = client_credentials

    ejemplo de token retirado: 328467452729456598 | Wn2Gt69Ofg5ySdOGa3TsP2p4R

  2. Uso APP_ACCESS_TOKEN llegar PAGE_ACCESS_TOKEN para cada página graph.facebook.com/me/accounts?access_token=APP_ACCESS_TOKEN

  3. Uso PAGE_ACCESS_TOKEN para obtener datos de estadísticas de la página: graph.facebook.com/YOUR_APP_ID/ ideas señal_acceso = PAGE_ACCESS_TOKEN

Mi problema es que el APP_ACCESS_TOKEN que recibo de paso 1 parece que falta la parte de usuario de la ficha, dando como resultado el siguiente error cuando se ejecuta el paso 2:?

"message": "An active access token must be used to query information about the current user.", 
"type": "OAuthException", 
"code": 2500 

Intento con fichas recuperado de Graph Explorer API token de

Si utilizo el APP_ACCESS_TOKEN conseguir a través del Explorador de Graph API (https://developers.facebook.com/tools/explorer), consigo un token con la parte del usuario que es significativamente más largo. Si utilizo este token en los pasos 2 y 3, obtengo los datos correctos, pero todos los tokens solo son válidos durante 2 horas y, por lo tanto, no puedo usar esto para la recuperación automática de los datos de estadísticas.

intento con el intercambio de token de corta duración para la larga vida token de

Siguiendo los pasos descritos en esta guía: https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token, me trató de intercambiar un token de corta duración para una vida más larga uno.

Si uso oportunidad de intercambiar el token obtenido del proceso oauth, me sale el error:

"message": "No user access token specified", 
    "type": "OAuthException", 
    "code": 1 

Si utilizo el token obtenido de forma manual desde el explorador de Graph en el método de intercambio, que puede obtener el otros pasos para trabajar también, pero ¿por cuánto tiempo dura este nuevo token? Si el token expira después de x días o después de algún otro evento, aún me enfrentaría al problema de obtener el token inicial programáticamente (a diferencia de cada uno desde Graph Explorer).

Entonces, ¿alguien sabe cómo puedo obtener un token de larga duración, recuperado automáticamente para resolver esto?

Gracias!

+0

Se necesita un token de acceso para consultar _user_ '/ Me/accounts', no un token de acceso de aplicaciones. – CBroe

Respuesta

-1

En el paso 2, debe usar el access_token del usuario para acceder al punto final de la API /accounts. No puede usar el token de acceso a la aplicación aquí.

Lo que debe hacer es:

  1. Obtener token de acceso del usuario de Facebook
  2. Cambio de la señal_acceso para una larga vida token de
  3. llamada /accounts para obtener un acceso de duración en vivo página símbolo
  4. Acceda a la información de la página utilizando el token de larga duración hasta que caduque
  5. Repita los pasos 1-4.
  6. guión
+0

¿Te refieres a la [ficha de usuario] de la aplicación (https://developers.facebook.com/tools/access_token/)? Si es así, ¿hay alguna forma de obtener esto programáticamente? (Estoy intentando con el acceso de usuario – user1597852

+0

Dije App 'access_token' no" token de usuario ". Siga mis instrucciones para obtener lo que necesita programáticamente. En el paso (3), le doy la llamada API para obtener access_token para la página. Todo se debe hacer utilizando el 'access_token' del usuario –

+0

¿Cómo se hace el paso (2)? –

Cuestiones relacionadas