Soy consciente de que hay muchas preguntas sobre los tokens de acceso de Facebook y el dolor que causan, pero a pesar de mucha experimentación y leer muchos artículos de blog frustrantemente vagos (FB y otros), todavía estoy luchando por obtener una respuesta clara a mis necesidades. . Permítanme desglosar sucintamente mi proceso hasta ahora:
- Estoy creando un sitio que, del lado del servidor, necesita extraer las publicaciones / estados de una sola página de Facebook
- Soy administrador de esa página de Facebook
- He creado una aplicación de Facebook
- Usando el Explorador de API de Facebook Graph , he generado una clave de corta duración, conectada a mi aplicación y mi cuenta, que otorga permiso a mi cuenta para ver los tokens de acceso para mis páginas.
- He convertido mi clave de corta duración en una clave de larga duración (60 días) en el escenario 4 de este
Y aquí es donde estoy atrapado. Mi clave de 60 días funciona bien para que mi servidor extraiga la información necesaria de la página, pero hasta donde puedo decir, no hay forma de extender programáticamente esa clave de 60 días. Tampoco conozco una forma de generar una nueva clave de corta duración sin ir manualmente al Explorador de API de gráficos de Facebook y crear una.
Dado que es mi servidor el que realiza las solicitudes a la API de Facebook y no un sistema basado en el usuario (donde podría solicitar fácilmente que un usuario autorice la aplicación de Facebook nuevamente), esto crea un sistema muy torpe. Dado que Facebook está en desuso offline_access
, ¿no hay realmente una forma permanente de que mi servidor extraiga información de mi propia página? ¿Realmente tendré que crear una nueva clave a mano y actualizar manualmente mi servidor con ella cada 60 días?
¿O hay algo que me estoy perdiendo?
Actualizar:
La guía paso a paso que se encontró anteriormente aquí se ha migrado a su propia respuesta .
fuente
Respuestas:
Habiendo descubierto que es posible generar un token de acceso a la página de Facebook que no caduca (con la ayuda de @Igy), aquí hay una guía clara paso a paso para todos aquellos que buscan lo mismo:
manage_pages
permisohttps://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
de la página de la que extraerás informaciónExpires: Never
.Deberias hacer eso. Ahora debería tener un token de acceso a la página de Facebook que no caduca, a menos que:
Cualquiera de estos hará que el token de acceso deje de ser válido.
Si lo está recibiendo
(#100) Tried accessing nonexisting field (accounts) on node type (Page)
, vaya al depurador de tokens de acceso , copie el valor deUser ID
y úselo para reemplazar la parte "yo" de la URL en el paso 9.fuente
manage_pages
opción está debajo de laExtended Permissions
pestaña.Esto se trata en el documento de baja del acceso sin conexión
Use el token de 60 días para que el administrador de la página recupere un token de acceso a la página (a través de
/PAGE_ID?fields=access_token
o/me/accounts
); el token de acceso a la página no tendrá una fecha de vencimientofuente
page_access_token
mediante código en javascript? Como la forma de conseguirlouser_access_token
>FB.getAuthResponse()['accessToken'];
¡Gracias!Un enfoque que funciona en 2019
Hace poco intenté lograr algo similar (al caso de uso descrito en este hilo), pero quería asegurarme de respetar las políticas actuales de Facebook, así que investigué un poco y aquí estoy compartiendo lo que encontré.
Mi caso de uso
Entonces, como ya dije, mi caso de uso es muy similar al que se describe aquí; es decir:
Este es, en mi opinión, un caso de uso legítimo, pero no estaba seguro de cómo implementarlo de una manera que esté en línea con las políticas de Facebook.
La respuesta aceptada
Seguí los pasos de la respuesta aceptada y funcionó, excepto que las cosas parecen haber cambiado: ahora, aunque el token de página generado no caduca,
access to data
caduca después de unos 60 días. También verá eso si sigue el procedimiento e inspecciona el token de la página en la herramienta FB Token Debugger Tool .Además, el hecho de que los tokens de página generados estén vinculados a la cuenta de usuario también es lamentable, porque si el usuario actualiza su contraseña, el token de página también se invalida.
Cómo hacerlo en 2019
Después de varias horas de investigación, me encontré con el siguiente artículo de documentación de Facebook: Business Login for Direct Businesses .
Resulta que ahora es posible, siguiendo los pasos descritos en el artículo anterior, generar un token de página que no está asociado a ninguna cuenta de usuario de Facebook en particular y que no caducará (a menos que se elimine la aplicación FB o el token de la aplicación subyacente se elimina, ya sabes ...)
Así que aquí están los pasos y las partes más importantes:
manage_pages
ypublish_pages
.Ese token nunca caducará y no estará vinculado a un usuario de Facebook en particular, ¡así que es exactamente lo que necesitamos!
La última parte es asegurarse de que Facebook apruebe su aplicación de Facebook. De hecho, es la parte más importante, porque todo el procedimiento es inútil si la gente no ve nuestras publicaciones.
Quería estar seguro de que podía confiar en el procedimiento anterior para crear algo para mi cliente sin que Facebook lo rechazara al final, así que, de antemano (es decir, antes de comenzar a trabajar en el proyecto de mi cliente), pasé por todo el proceso de creando una página, una aplicación, una cuenta de Business Manager, etc. Verifiqué mi negocio. Envié mi aplicación para su revisión. En mi solicitud, fui muy específico sobre mi caso de uso y enfaticé que la aplicación era para "uso propio" (es decir, que la organización está desarrollando una aplicación para sí misma, no para otros usuarios de Facebook). Me aprobaron en menos de 24 horas.
Algunas otras notas sobre el proceso de revisión de la aplicación:
curl
utilidad (para generar el token de la página y hacer publicaciones en la página de Facebook). También mostré cómo estaba usando Business Manager para vincular al usuario del sistema a la página y generar un token, y así sucesivamente.Espero que esta información sea útil para personas con casos de uso similares.
fuente
Muchas gracias a @redhotvengeance por la guía paso a paso.
Después de un tiempo, ahora se describe claramente en la documentación de Facebook:
https://developers.facebook.com/docs/facebook-login/access-tokens/expiration-and-extension
fuente
También puede copiar y pegar desde el panel de la aplicación en Facebook. Los pasos:
Vaya a https://developers.facebook.com
Seleccione su aplicación en la esquina superior derecha de la página (imagen de cómo se ve)
Tenga en cuenta que, si bien en teoría su token no caducará, está directamente vinculado a la cuenta de Facebook en la que haya iniciado sesión. Entonces, digamos que cambia su contraseña o elimina los permisos entre su cuenta y su aplicación, entonces su token ya no será válido.
fuente