Facebook PHP SDK zajmujący się tokenami dostępu
Czołgałem się po wielu różnych odpowiedziach, ale wciąż jestem trochę zmieszany z tym, jak powinienem postępować z Facebookiemtokeny dostępu. Jednym z głównych problemów, które mam, jest to, jakie informacje są przechowywane w mojej przeglądarce. Na przykład, loguję się do aplikacji, token wygasa, nie mogę zalogować się ponownie, chyba że wyczyszczę ustawienia ciasteczek / aplikacji w przeglądarce.
Natknąłem się na ten wątek:Jak rozszerzyć ważność tokenów dostępu od czasu wycofania offline_access
Co pokazało mi, jak utworzyć rozszerzony token dostępu przez php.
Moje pytania to:
1 Czy muszę przechowywać token dostępu w dowolnym miejscu?
2. Co się stanie, gdy token dostępu wygaśnie lub stanie się nieważny? W tej chwili moja aplikacja po prostu przestaje działać, gdy wygasają te krótkoterminowe.
3. Czy powinienem postępować z nimi, aby sprawdzić, czy wygasły? Używam php sdk i zasadniczo użyłem standardu if ($ user) ... W ten sposób:
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...
}
Czy jest coś jeszcze, co powinienem robić, aby obsługiwać tokeny?. Czy powinienem przekazywać token dostępu między stronami, czy może po prostu wywołać go ponownie na górze każdej strony w ten sposób:
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXX',
'redirect_uri' => 'http://localhost:8000/',
));
$token = $facebook->getExtendedAccessToken();