Hola:
He coentado mi aplicación con fb, usando el JS SDK me devuelve el token y se lo paso a la aplicación. La cuestion es que el lifetime es muy corto y necesito extenderlo.
¿Me podeis echar una mano?
PD: Tambien estoy usando el SDK de PHP.
Un saludo
Respuestas
Lso tokens normales de Facebook son "short lived" y duran unas dos horas. Lo bueno es que puedes convertirlos en "long lived tokens" que duran unos 60 días. En este artículo de la documentación oficial de Facebook se explica cómo crear el token largo a partir del corto.
@javiereguiluz
Gracias @javiereguiluz, pero ese articulo ya lo leí. Dice que tienes que hacer la petición a:
GET /oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}
Mi duda es ¿Cómo hago la llamada a esa url? ¿Con la propia API de Facebook?
$this->fbapi = new Facebook(['app_id' => $appId, 'app_secret' => $appSecret]); $this->fbapi->request('GET','/oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={short-lived-token}');
Cambiando los datos por los que tengo yo. ¿No?
@TsubasaAkai
En teoría si, aunque no he trabajado con la API de Facebook. Eso sí, recuerda lo que dice el artículo: esa segunda petición la tienes que hacer desde tu propio servidor, nunca desde el navegador del usuario. Además, tienes que renovar de vez en cuando esos "long lived tokens" redirigiendo al usuario a la URL de login (aunque no tendrá que loguearse de nuevo y se le redirigirá automáticamente).
@javiereguiluz
Vale, he encintrado la respuesta:
public function extendToken($fbToken) { $graph_url = "https://graph.facebook.com/oauth/access_token ?client_id=".$this->fbAppId. "&client_secret=".$this->fbAppSecret. "&grant_type=fb_exchange_token&fb_exchange_token=".$fbToken; $result = file_get_contents($graph_url); parse_str($result, $output); return $output['access_token']; }
@TsubasaAkai