Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Extender el lifetime de la token de facebook

29 de septiembre de 2016

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

#1

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

29 septiembre 2016, 21:19
#2

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

29 septiembre 2016, 22:22
#3

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

29 septiembre 2016, 22:27
#4

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

29 septiembre 2016, 22:39