He conseguido publicar en la página de Facebook a través de la API (C#), pero cuando el administrador de la página cierra la sesión, se produce el siguiente error:
"(OAuthException - #190) Error validando token de acceso: The session is invalid because the user logged out."
¿Cómo puedo generar un token de acceso que no caduque nunca?
Necesito una solución que no'abra el diálogo de inicio de sesión de Facebook.
Este es el código que utilizo para generar "Never" expire token de acceso utilizando PHP SDK:
$facebook = new \Facebook\Facebook([
'app_id' => '{app-id}',
'app_secret' => '{app-secret}',
'default_graph_version' => 'v2.10',
'default_access_token' => '{access-token}'
]);
// Exchange token
$token = $facebook->post('/oauth/access_token',
array(
'grant_type' => 'fb_exchange_token',
'client_id' => 'APP ID',
'client_secret' => 'APP Secret',
'fb_exchange_token' => 'access Token'
)
);
$token = $token->getDecodedBody();
$token = $token['access_token'];
echo $token;
Hago eco del token de acceso y luego lo depuro usando el depurador de token de acceso. El resultado debería ser: Expires: Never
.
Referencias de la Documentación:
Puedes usar la siguiente api de facebook para refrescar la vida del token a 60 días y justo cuando el token esté a punto de caducar, volver a llamar a la misma api dentro de 60 días para refrescar su vida de nuevo a 60 días desde ese momento Token expire está presente en expires parámetro y su valor es en segundos
Sustituya CLIENT_ID y CLIENT_SECRET por su valor real.
https://graph.facebook.com/oauth/access_token?client_id=<CLIENT_ID>
&client_secret=<CLIENT_SECRET>&grant_type=fb_exchange_token
&fb_exchange_token=<ACCESS_TOKEN>
en ACCESS_TOKEN, ponga el valor real del token sin añadir "access_token="