Facebook: ¿Token de acceso permanente a la página?
Trabajo en un proyecto que tiene páginas de Facebook como una de sus fuentes de datos. Importa algunos datos 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 acceder a los datos una vez y luego conservarlos. Sin embargo, no conozco el proceso y todavía no he encontrado un buen tutorial al respecto. 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 nuestra de FB a la página?
EDITAR: Gracias @phwd por el consejo. Hice un tutorial sobre cómo obtener un token de acceso permanente a la página, incluso si offline_access
ya no existe.
EDITAR: Acabo de descubrir que se responde aquí: Token de acceso de FB de larga duración para que el servidor obtenga información de la página de FB
Siguiendo las instrucciones establecidas en la documentación de extensión de tokens de página de Facebook , pude obtener un token de acceso a la página que no caduca.
Sugiero utilizar Graph API Explorer para todos estos pasos, excepto que se indique lo contrario.
0. Crea una aplicación de Facebook
Si ya tienes una aplicación , salta al paso 1.
- Vaya a Mis aplicaciones .
- Haga clic en "+ Agregar una nueva aplicación".
- Configurar una aplicación de sitio web.
No es necesario cambiar sus permisos ni nada. Sólo necesitas una aplicación que no desaparezca antes de que hayas terminado con tu token de acceso.
1. Obtenga un token de acceso de corta duración para el usuario
- Vaya al Explorador de Graph API .
- Seleccione la aplicación para la que desea obtener el token de acceso (en el menú desplegable "Aplicación", no en el menú "Mis aplicaciones").
- Haga clic en "Obtener token" > "Obtener token de acceso de usuario".
- En la ventana emergente, en la pestaña "Permisos extendidos", marque "manage_pages".
- Haga clic en "Obtener token de acceso".
- Conceder acceso desde una cuenta de Facebook que tenga acceso para administrar la página de destino. Tenga en cuenta que si este usuario pierde el acceso, el token de acceso final que nunca caduca probablemente dejará de funcionar.
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, realice una solicitud GET a
https://graph.facebook.com/v2.10/oauth/access_token?grant_type=fb_exchange_token&client_id= {app_id} &client_secret= {app_secret} &fb_exchange_token= {short_lived_token}
ingresando el ID y el secreto de su aplicación y el token de corta duración generado en el paso anterior.
No puede utilizar Graph API Explorer . Por alguna razón, esta solicitud se atasca. Creo que es porque la respuesta no es JSON, sino una cadena de consulta. Como es una solicitud GET, puedes ir a la URL en tu navegador.
La respuesta debería verse así:
{"access_token":" ABC123 ","token_type":"portador","expires_in":5183791}
"ABC123" será su token de acceso de larga duración. Puede colocarlo en el depurador de token de acceso para verificarlo. En "Expira", debería tener algo así como "2 meses".
3. Obtener ID de usuario
Utilizando el token de acceso de larga duración, realice una solicitud GET para
https://graph.facebook.com/v2.10/me?access_token= {long_lived_access_token}
El id
campo es su ID de cuenta. Lo necesitarás para el siguiente paso.
4. Obtenga un token de acceso permanente a la página
Haga una solicitud GET para
https://graph.facebook.com/v2.10/ {account_id} /accounts?access_token= {long_lived_access_token}
La respuesta JSON debe tener un data
campo debajo del cual haya una serie de elementos a los que el usuario tenga acceso. Busque el elemento de la página desde la que desea obtener el token de acceso permanente. El access_token
campo debe tener su token de acceso permanente. Cópielo y pruébelo en Access Token Debugger . En "Expira", debería decir "Nunca".
Aquí está mi solución usando solo Graph API Explorer y Access Token Debugger :
- Explorador de API de gráficos:
- Seleccione su aplicación en el menú desplegable superior derecho
- Seleccione "Obtener token de acceso de usuario" en el menú desplegable (a la derecha del campo del token de acceso) y seleccione los permisos necesarios.
- Copiar token de acceso de usuario
- Depurador de tokens de acceso:
- Pegue el token copiado y presione "Depurar"
- Presione "Extender token de acceso" y copie el token de acceso de usuario de larga duración generado.
- Explorador de API de gráficos:
- Pegue el token copiado en el campo "Token de acceso"
- Realizar una solicitud GET con "PAGE_ID?fields=access_token"
- Busque el token de acceso a la página permanente en la respuesta (nodo "access_token")
- (Opcional) Depurador de tokens de acceso:
- Pega el token permanente y presiona "Depurar"
- "Expira" debería ser "Nunca"
(Probado con API versión 2.9-2.11, 3.0-3.1)
Además de los pasos recomendados en la respuesta de Vlasec , puede utilizar:
- Explorador Graph API para realizar consultas, por ejemplo
/{pageId}?fields=access_token&access_token=THE_ACCESS_TOKEN_PROVIDED_BY_GRAPH_EXPLORER
- Acceda a Token Debugger para obtener información sobre el token de acceso.