我已经爬行了很多不同的答案,但我仍然对我应该如何处理 Facebook 感到有点困惑访问令牌。
我遇到的主要问题之一是浏览器中存储的信息。例如,我登录应用程序,令牌过期,除非清除浏览器中的 cookie/应用程序设置,否则我无法再次登录。
我偶然发现了这个线程:自offline_access弃用以来如何延长访问令牌的有效性
这向我展示了如何通过 php 创建扩展访问令牌。
我的问题是:
1.我需要将访问令牌存储在任何地方吗?
2.当访问令牌过期或失效时会发生什么?目前,当短期访问权限到期时,我的应用程序就会停止工作。
3.我应该有什么方法来处理它们以检查它们是否已过期?
我正在使用 php sdk 并且基本上使用了标准 if( $user )... 像这样:
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...
}
。我应该在页面之间传递访问令牌,还是可以在每个页面的顶部再次调用它,如下所示:
$facebook = new Facebook(array(
'appId' => 'XXXXXXXXXXXX',
'secret' => 'XXXXXXXXXXXX',
'redirect_uri' => 'http://localhost:8000/',
));
$token = $facebook->getExtendedAccessToken();