facebook-graph-api obtener - Tokens de acceso a la página de Facebook:¿caducan?




access page (8)

Estoy construyendo una aplicación que permite a los usuarios administrar sus páginas de fans de Facebook. Esto requiere los siguientes dos tokens de acceso:

  1. Un token de acceso de usuario
  2. Un token de acceso a la página

Estoy bastante familiarizado con los tokens de acceso de usuario, pero no con los tokens de acceso a la página.

¿Alguien sabe por cuánto tiempo el token de acceso a la página sigue siendo válido? Todo lo que puedo encontrar en el sitio web de Facebook es este breve párrafo , que no menciona nada sobre su vencimiento.

¿Puedo asumir que si offline_access el token de acceso de usuario con el permiso de acceso sin offline_access el token de acceso a la página también durará indefinidamente (a menos que el usuario cambie su contraseña o desautorice mi aplicación manualmente)?

Pregunto porque quiero saber con qué frecuencia debo consultar la API Graph de Facebook y adquirir tokens de acceso a la página. ¿Debería simplemente solicitarlos una vez cuando el usuario se registra? ¿O debería solicitarlos en cada Llamada API en caso de que cambien continuamente? ¡El último es obviamente más agotador!


Answers

Mira esto https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token De acuerdo con esto, cuando obtienes token de acceso de corta duración y lo extiendes a token de acceso en vivo, esto no se expande solo para el token de acceso a la página. Ver escenario 5: token de acceso a la página


El token de acceso a la página de Facebook es muy similar al token de acceso del usuario, excepto que "suplanta al usuario" como el administrador de la página y permite administrarlo [se requiere el permiso manage_page].

Si se concede el permiso Offline_access a la aplicación, la página access_token NO caducará (a menos que el usuario cambie su contraseña o desautorice manualmente la aplicación)

Use el siguiente enlace para verificar los detalles de un token de acceso emitido.

https://developers.facebook.com/tools/debug/


No estoy seguro de si Facebook ha realizado cambios para corregir estos errores o no, pero parece que los tokens de acceso de los usuarios no caducan una vez que se otorgan los tokens de acceso a la página para el usuario. De acuerdo con mis pruebas, el flujo es más o menos así:

  1. Token de acceso de usuario solicitado -> token de usuario de 60 días se emite
  2. Se solicitaron tokens de acceso a la página -> tokens de acceso a la página emitidos que nunca caducaron y el token inicial de acceso del usuario se actualiza para que nunca caduque también.

Espero que esto aclare algo de la confusión aquí. He probado esto con muchos usuarios diferentes en nuestra aplicación y veo lo mismo cada vez.

Si nunca se solicitan tokens de acceso a la página, el token de acceso de usuario original caducará después de 60 días.


Los tokens de acceso a la página han caducado cuando expiró el token de acceso del usuario. Puede extender el token de acceso de usuario para que dure hasta 60 días para que el token de acceso a la página dure mucho tiempo.

Echa un vistazo a mi blog y sigue las instrucciones paso a paso para obtener un token de acceso ampliado y obtener los tokens de acceso a la fanpage también.


Los tokens de página caducan cuando el token de acceso caduca para el usuario desde el que se generó el token de página. Editar 6.28.2013: si extiende el token de acceso de usuario y obtiene un nuevo token de acceso a la página para el usuario, ese token de página no caducará a menos que el usuario lo desautorice.

El acceso fuera de línea ahora se ha desaprobado, pero se le permite extender un token de acceso para que dure 60 días. Si extiende el token de acceso del usuario, los tokens de página generados a partir de esa cuenta de usuario también tendrán su vencimiento extendido para que coincida con la fecha de vencimiento (editado el 6.28.2013). El valor de los tokens de página puede cambiar después de la extensión, así que asegúrese de obtener nuevos tokens de página de la conexión del gráfico de /accounts usuario después de extender el token de usuario.

Puede continuar ampliando estos tokens de acceso una vez por día. Por lo tanto, debe regenerar los tokens de acceso cada día que el usuario interactúa con su aplicación.

Consulte https://developers.facebook.com/docs/facebook-login/access-tokens/#pagetokens https://developers.facebook.com/docs/facebook-login/access-tokens/#extending https://developers.facebook.com/docs/facebook-login/
https://developers.facebook.com/roadmap/offline-access-removal/ https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/


  • El token de acceso a la página predeterminado tiene una vida corta, por lo que caducan en 1 o 2 horas. Si desea que dure más tiempo, debe extender el token de acceso de corta vida a uno de larga duración, de modo que dure aproximadamente 2 meses.
  • El permiso offline_access ahora está en desuso.
  • El token de acceso no caduca cuando un usuario cambia es una contraseña.

En otra pregunta, explico cómo ampliar el token de acceso a la página .


Puede extender un token de acceso a la página para que nunca caduque. La documentación está un poco embarrada, pero las siguientes páginas contienen información pertinente, y obviamente deberá ser un administrador de la página. Preste mucha atención al escenario 4 y 5 en el segundo enlace.

https://developers.facebook.com/docs/reference/api/page/#page_access_tokens https://developers.facebook.com/roadmap/offline-access-removal/#page_access_token

Es simple usar el explorador de gráficos para recuperar los tokens de Facebook. El explorador de gráficos también le permite depurar el token que mostrará la fecha de vencimiento, por lo que puede verificar que nunca caduque. Graph Explorer: https://developers.facebook.com/tools/explorer

Haga clic en el botón Obtener token de acceso para recuperar su token. Guardando su identificación en la barra de consulta, simplemente agregue / cuentas a su identificación, para que se vea así: /123456789101112/accounts . Asegúrese de que sea una solicitud GET (El menú desplegable a la izquierda de la barra de consulta).

Esto recuperará todas las páginas con las que está configurado para trabajar. Luego necesita hacer una solicitud GET para:

/oauth/access_token?client_id=APP_ID&client_secret=APP_SECRET&grant_type=fb_exchange_token&fb_exchange_token=EXISTING_ACCESS_TOKEN 

Su APP_ID y APP_SECRET se pueden encontrar en la configuración de administración de sus aplicaciones. Use su token de acceso personal como el parámetro final (EXISTING_ACCESS_TOKEN). Esto devolverá un token de acceso personal de 60 días. Copie este token en la barra de tokens de acceso, que está encima de la barra de consultas. Ahora haga una solicitud GET a USER_ID / accounts como hicimos al principio. Esto devolverá nuevamente una lista de páginas con las que está configurado para trabajar.

Pero esta vez los tokens de página que se enumeran con las páginas no caducan. Puede verificar esto copiando un token de página en la barra de tokens de acceso y haciendo clic en el botón Depurar. Esto le dará detalles sobre ese token de acceso, incluido el tiempo de caducidad, que nunca debería ser en este caso.

ACTUALIZAR

También descubrí que el explorador de gráficos de Facebook a veces se confunde con el contexto del usuario, y puede que no sea confiable en todo momento. Las alternativas son Fiddler o Postman .


Soy un ingeniero de seguridad en Facebook y esto es mi culpa. Estamos probando esto para algunos usuarios para ver si puede ralentizar algunos ataques en los que se engaña a los usuarios para que peguen el código JavaScript (malicioso) en la consola del navegador.

Solo para ser claros: tratar de bloquear a los piratas informáticos del lado del cliente es una mala idea en general; Esto es para proteger contra un ataque específico de ingeniería social .

Si terminaste en el grupo de prueba y estás molesto por esto, lo siento. Traté de hacer que la antigua página de exclusión (ahora la página de ayuda ) sea lo más simple posible y que todavía tengo miedo de detener al menos a algunas de las víctimas.

El código real es bastante similar al enlace de @ joeldixon66 ; El nuestro es un poco más complicado por ninguna buena razón.

Chrome envuelve todo el código de la consola en

with ((console && console._commandLineAPI) || {}) {
  <code goes here>
}

... así que el sitio redefine console._commandLineAPI para lanzar:

Object.defineProperty(console, '_commandLineAPI',
   { get : function() { throw 'Nooo!' } })

Esto no es suficiente (¡inténtalo!) , Pero ese es el truco principal.

Epílogo: el equipo de Chrome decidió que derrotar la consola de JS del lado del usuario era un error y solucionó el problema , haciendo que esta técnica no fuera válida. Posteriormente, se agregó una protección adicional para proteger a los usuarios de self-xss .





facebook facebook-graph-api access-token facebook-page