【发布时间】:2013-01-03 10:21:39
【问题描述】:
我已经搜索了很多不同的答案,但仍然对我应该如何处理 facebook 访问令牌感到有些困惑。 我遇到的主要问题之一是由于我的浏览器中存储了哪些信息。例如,我登录应用程序,令牌过期,除非我清除浏览器中的 cookie/应用程序设置,否则我无法再次登录。
我偶然发现了这个帖子:How to extend access token validity 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();
【问题讨论】:
-
从我上次查看 Facebook API(去年)开始,您需要在它失效时获取一个新的访问令牌。您不需要在页面之间传递令牌,但我相信每次调用 API 都需要签名。
-
@Tebc 感谢您的回答。你知道兑换扩展代币后该怎么做吗?我一直遇到一个问题,几个小时后,在加载页面时突然出现 (!$user) 导致永远无法登录,除非浏览器被清除。有什么办法可以解决这个问题?
标签: php facebook sdk access-token