我已经找到了很多不同的答案,但仍然对我应该如何处理 facebook访问令牌感到有些困惑。我遇到的主要问题之一是由于我的浏览器中存储了哪些信息。例如,我登录应用程序,令牌过期,除非我清除浏览器中的 cookie/应用程序设置,否则我无法再次登录。
我偶然发现了这个线程:How to extend access token validation since offline_access deprecation
这向我展示了如何通过 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();