PROBLEMA BÁSICO: Quiero que mi aplicación pueda realizar llamadas a la API de Facebook api sobre usuarios autorizados incluso cuando el usuario está lejos.Facebook PHP SDK: obtener token de acceso "de larga vida" ahora que "offline_access" está en desuso
Por ejemplo, quiero que el usuario (A) autorice la aplicación, luego deseo que el usuario (B) pueda usar la aplicación para ver información sobre los amigos del usuario (A). Específicamente: el campo "trabajo". Sí, estoy solicitando esos permisos extendidos (user_work_history
, friends_work_history
, etc.). Actualmente mi aplicación tiene acceso al historial de trabajo de amigos del usuario conectado, pero no al historial de trabajo de amigos de otros usuarios de la aplicación.
Esto es lo que ya sabemos:
- Adición
offline_access
al parámetro alcance es la manera antigua y ya no funciona. - La nueva forma es con tokens de acceso de "larga vida", descritos here. Estos duran 60 días.
Necesito intercambiar un token de acceso normal para obtener el nuevo token extendido. La documentación de FB dice:
https://graph.facebook.com/oauth/access_token?
client_id = APP_ID & client_secret = APP_SECRET & grant_type = fb_exchange_token & fb_exchange_token = EXISTING_ACCESS_TOKEN
Esto es lo que no sé (y espero que usted me puede decir): ¿Cómo Cómo obtengo el token de acceso extendido (también conocido como "de larga duración") usando Facebook PHP SDK? Actualmente, mi código es el siguiente:
$facebook->getAccessToken();
¿Existe tal cosa como esto ?:
$facebook->getExtendedAccessToken();
Si no es así, ¿es esto lo que debería hacer?
$accessToken = $facebook->getAccessToken();
$extendedAccessToken = file_get_contents("https://graph.facebook.com/oauth/access_token?
client_id={$appId}&
client_secret={$secret}&
grant_type=fb_exchange_token&
fb_exchange_token={$accessToken}"
);
Lo he probado y no funciona. Obtengo este error:
Warning: file_get_contents(https://graph.facebook.com/oauth/access_token? client_id=#######& client_secret=#########& grant_type=fb_exchange_token& fb_exchange_token=##########) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /...
¿Funciona de manera diferente si cambio a FQL en lugar de la API del gráfico? He leído la documentación de Facebook muchas veces, pero el sdk de PHP no está completamente documentado y no puedo encontrar ningún ejemplo de cómo debería funcionar.
ya está en la página que ha vinculado la respuesta - la leyó una vez más, con cuidado ... – CBroe
Creo que sé a qué se refiere, y actualicé la pregunta para mostrar lo que probé (sin éxito). Por favor dime si estás hablando de otra cosa. – emersonthis
Si está utilizando el SDK, ¿por qué usa file_get_contents? Simplemente use Facebook :: api para realizar la solicitud en la API Graph. – CBroe