Facebook PHP SDK lidando com tokens de acesso
Eu tenho rastejado em torno de muitas respostas diferentes, mas ainda estou um pouco confuso com como eu deveria estar lidando com o facebooktokens de acesso. Um dos principais problemas que estou tendo é devido a quais informações estão sendo armazenadas no meu navegador. Por exemplo, eu faço logon no aplicativo, o token expira, não consigo fazer logon novamente, a menos que eu limpe os cookies / configurações do aplicativo no navegador.
Eu tropecei neste tópico:Como estender a validade do token de acesso desde o descarte offline_access
Que me mostrou como criar um token de acesso estendido através do php.
Minhas perguntas são:
1 Preciso armazenar o token de acesso em qualquer lugar?
2 O que acontece quando o token de acesso expira ou se torna inválido? No momento, meu aplicativo simplesmente pára de funcionar quando o acesso de curto prazo expira.
3 Existe uma maneira que eu deveria estar lidando com eles para verificar se eles expiraram? Estou usando o php sdk e basicamente usei o padrão if ($ user) ... Assim:
require 'sdk/src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXXXXXXXXXXX',
));
$user = $facebook->getUser();
if( $user ){
try{
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
if (!$user){
$params = array(
'scope' => 'email',
);
$loginUrl = $facebook->getLoginUrl( $params );
echo '<script type="text/javascript">
window.open("'. $loginUrl .'", "_self");
</script>';
exit;
}
if( $user ){
$access_token = $facebook->getExtendedAccessToken();
$get_user_json = "https://graph.facebook.com/me?access_token="
. $access_token;
// Rest of my code here...
}
Há mais alguma coisa que eu deveria estar fazendo para lidar com fichas?. Devo estar passando o token de acesso entre as páginas ou é ok chamá-lo novamente no topo de cada página assim:
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXX',
'redirect_uri' => 'http://localhost:8000/',
));
$token = $facebook->getExtendedAccessToken();