Trabajo en un proyecto que tiene páginas de Facebook como una de sus fuentes de datos. Importa algunos datos de él periódicamente sin GUI involucrada. Luego usamos una aplicación web para mostrar los datos que ya tenemos.
No toda la información es pública. Esto significa que tengo que obtener acceso a los datos una vez y luego conservarlos. Sin embargo, no conozco el proceso y todavía no he encontrado un buen tutorial sobre eso. Supongo que necesito un access_token
, ¿cómo puedo obtenerlo del usuario, paso a paso? El usuario es administrador de una página de Facebook, ¿tendrá que agregar alguna aplicación de FB nuestra a la página?
EDITAR: Gracias @phwd por el consejo. Hice un tutorial sobre cómo obtener un token de acceso a la página permanente, incluso cuando offline_access
ya no existe.
EDITAR: acabo de descubrir que se responde aquí: token de acceso FB de larga duración para que el servidor extraiga la información de la página FB
Respuestas:
Siguiendo las instrucciones expuestas en la documentación de tokens de página extendida de Facebook, pude obtener un token de acceso a la página que no caduca.
Sugiero usar Graph API Explorer para todos estos pasos, excepto donde se indique lo contrario.
0. Crear aplicación de Facebook
Si ya tiene una aplicación , vaya al paso 1.
No necesita cambiar sus permisos ni nada. Solo necesita una aplicación que no desaparezca antes de que haya terminado con su token de acceso.
1. Obtenga el token de acceso de corta duración del usuario
El token que aparece en el campo "Token de acceso" es su token de acceso de corta duración.
2. Generar token de acceso de larga duración
Siguiendo estas instrucciones de los documentos de Facebook, haga una solicitud GET para
ingresando el ID y el secreto de su aplicación y el token de corta duración generado en el paso anterior.
No puede usar Graph API Explorer . Por alguna razón, se atasca en esta solicitud. Creo que es porque la respuesta no es JSON, sino una cadena de consulta. Como se trata de una solicitud GET, puede ir a la URL en su navegador.
La respuesta debería verse así:
"ABC123" será su token de acceso de larga duración. Puede ponerlo en el depurador de tokens de acceso para verificar. En "Caduca" debería tener algo así como "2 meses".
3. Obtener ID de usuario
Usando el token de acceso de larga duración, haga una solicitud GET para
El
id
campo es su ID de cuenta. Lo necesitará para el siguiente paso.4. Obtenga un token de acceso a la página permanente
Haga una solicitud GET para
La respuesta JSON debe tener un
data
campo bajo el cual hay una matriz de elementos a los que el usuario tiene acceso. Encuentre el elemento para la página desde la que desea el token de acceso permanente. Elaccess_token
campo debe tener su token de acceso permanente. Cópielo y pruébelo en el depurador de tokens de acceso . En "Caduca" debería decir "Nunca".fuente
message: "(#100) Tried accessing nonexisting field (accounts) on node type (Page)", type: "OAuthException", code: 100
vaya al Depurador de tokens de acceso FB y pruebe su long_lived_access_token. Consistentemente he visto que después de unos minutos, si vas hacia atrás y vuelva a comprobar la long_lived_access_token el FB Token de acceso depurador A continuación, indican que esa señal es permanente (Caducidad: nunca)(#100) Tried accessing nonexisting field (accounts) on node type (Page)
error ... no puede continuar con el paso 5 ... Aún así, gracias ... LE: revise la última parte de la respuesta proporcionada por @Vlasec. Puede obtener el token de acceso permanente al consultar / {pageId}? Fields = access_token & access_token = {long_lived_access_token}, por lo que se solucionó el problema.https://graph.facebook.com/v2.7/{page_id}?fields=access_token&access_token={long_lived_access_token}
Aquí está mi solución usando solo Graph API Explorer y Access Token Debugger :
(Probado con API Versión 2.9-2.11, 3.0-3.1)
fuente
Además de los pasos recomendados en la respuesta de Vlasec , puede usar:
/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
fuente
Hice un script PHP para hacerlo más fácil. Crea una aplicación . En Graph API Explorer, seleccione su aplicación y obtenga un token de usuario con permiso de manage_pages y Publish_pages. Encuentre la identificación de su página en la parte inferior de su página Acerca de. Complete los vars de configuración y ejecute el script.
fuente
Otra respuesta PHP para hacer la vida más fácil. Actualizado para Facebook Graph API 2.9 . Simplemente llénelo y cárguelo.
Anexo: (alternativa)
Gráfico 2.9 en adelante, puede omitir gran parte de la molestia de obtener un token de acceso largo simplemente haciendo clic en Extender token de acceso en la parte inferior de la herramienta Debugger de token de acceso , después de haber depurado un token de acceso corto. Armado con información sobre
pageid
ylonglivedtoken
, ejecute el php a continuación para obtener un token de acceso permanente.Aunque el segundo código le ahorra muchas molestias, le recomiendo que ejecute el primer código php a menos que tenga mucha prisa porque verifica de forma cruzada pageid y userid. El segundo código no terminará funcionando si elige el token de usuario por error.
fuente
Graph API Explorer
en el campo Aplicación antes de poder solicitar un token.v2.9
en la segunda llamada y eso funcionó para mí. WierdIntenté estos pasos: https://developers.facebook.com/docs/marketing-api/access#graph-api-explorer
Obtener token de acceso a la página permanente
Un consejo, solo funcionó para mí cuando el idioma de la página es el inglés .
fuente
Si solo solicita datos de página, puede usar un token de acceso a la página. Solo tendrá que autorizar al usuario una vez para obtener el token de acceso del usuario; extiéndalo a dos meses de validez y luego solicite el token para la página. Todo esto se explica en el escenario 5 . Tenga en cuenta que el token de acceso a la página adquirido solo es válido mientras el token de acceso de usuario sea válido.
fuente
Mientras obtenía el token de acceso permanente, seguí los 5 pasos anteriores como mencionó Donut . Sin embargo, en el quinto paso, mientras se genera el token de acceso permanente, se devuelve el token de acceso de larga duración (que es válido durante 2 meses), no el token de acceso permanente (que nunca caduca). Lo que noté es que la versión actual de Graph API es V2.5. Si intenta obtener el token de acceso permanente con V2.5, le está dando un token de acceso de larga duración. Intente realizar una llamada API con V2.2 (si no puede cambiar la versión en el explorador de API api, presione la llamada API https: //graph.facebook.com/v2.2/ {account_id} / accounts? access_token = {long_lived_access_token} en la nueva pestaña con V2.2), obtendrá el token de acceso permanente (que nunca caduca)
fuente
Además de los métodos mencionados, vale la pena mencionar que para las aplicaciones de servidor a servidor, también puede usar esta forma de token de acceso permanente: app_id | app_secret Este tipo de token de acceso se llama Token de aplicación. Generalmente se puede usar para llamar a Graph API y consultar nodos públicos dentro del back-end de su aplicación. Se menciona aquí: https://developers.facebook.com/docs/facebook-login/access-tokens
fuente
Gracias a @donut logré obtener el token de acceso que nunca caduca en JavaScript.
y luego usé el token de acceso guardado como este
Espero que alguien pueda recortar este código porque es un poco desordenado, pero fue la única forma en que se me ocurrió.
fuente
Si tiene la aplicación de Facebook, puede probar con id-aplicación y secreto-aplicación.
Me gusta :
no requerirá cambiar el token con frecuencia.
fuente
Límite de solicitud de aplicación alcanzado (# 4) - FB API v2.1 y superior
Esta respuesta me llevó a la "respuesta final para nosotros" y, por lo tanto, está muy relacionada, así que la adjunto aquí. Si bien está relacionado con lo anterior, es diferente y parece que FB ha simplificado un poco el proceso.
Nuestras cuentas de uso compartido en nuestro sitio dejaron de funcionar cuando FB pasó la API a la versión 2.1. En nuestro caso, ya teníamos una aplicación de FB y NO estábamos usando el inicio de sesión de FB. Entonces, lo que teníamos que hacer era obtener un token de aplicación FB para hacer las nuevas solicitudes. Esto es a partir del 23 de agosto de 2016.
Seleccione la versión de la API y luego use GET y pegue lo siguiente:
Querrá obtener su identificación de la aplicación y su secreto de la aplicación desde su página de la aplicación. Página principal del desarrollador de FB Apps
Ejecute la consulta gráfica y verá:
Dónde
y será la identificación de su aplicación desde la página de su aplicación FB y la aplicación HAB de FB generada que acaba de recibir.A continuación, pruebe su nuevo token de acceso a la aplicación: FB Access Token tester
Deberías ver, pegando el
en el probador de tokens, un token basado en una sola aplicación sin fecha / hora de vencimiento.En nuestro caso, estamos utilizando el FB js sdk, así que cambiamos nuestra llamada para que sea así (tenga en cuenta que esto SOLO obtiene el recuento de acciones y no el recuento de acciones y comentarios combinados como solía ser) :
Esto ahora está funcionando correctamente. Esto requirió mucha búsqueda y un informe de error oficial con FB para confirmar que tenemos que comenzar a hacer solicitudes tokenizadas a la API de FB. Como comentario aparte, solicité que (FB) agreguen una pista al Código de error (# 4) que menciona la solicitud tokenizada.
Acabo de recibir otro informe de uno de nuestros desarrolladores de que nuestro recuento de comentarios de FB también está roto debido a la nueva necesidad de solicitudes tokenizadas, por lo que actualizaré esto en consecuencia.
fuente
Muchos de estos ejemplos no funcionan, no estoy seguro si se debe a la salida de 2.9v pero me estaba golpeando la cabeza. De todos modos, tomé la versión @ dw1 y la modifiqué un poco con la ayuda del video @KFunk y conseguí que funcionara para 2.9. Espero que esto ayude.
fuente
A partir de abril de 2020, mis tokens de página previamente permanentes comenzaron a caducar entre 1 y 12 horas. Comencé a usar tokens de usuario con el
manage_pages
permiso para lograr el objetivo anterior (sondear los eventos de una página). Esas fichas parecen ser permanentes.Creé un script de Python basado en la información que se encuentra en esta publicación, alojada en github.com/k-funk/facebook_permanent_token , para realizar un seguimiento de qué parámetros son necesarios y qué métodos para obtener un token permanente están funcionando.
fuente
Encontré esta respuesta que se refiere a esta herramienta que realmente ayudó mucho.
Espero que esta respuesta siga siendo válida cuando leas esto.
fuente