FacebookI正在使用facebook javascript sdk来登录用户,然后我希望通过php sdk获取他的一些信息,但我一直在获取"必须使用活动访问令牌来查询有关当前用户的信息。"
这是相关的html/js代码:
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : '8', // App ID from the app dashboard
channelUrl : '//url/frontend/channel.php', // Channel file for x-domain comms
status : true, // Check Facebook Login status
cookie : true,
oauth:true,
xfbml : true // Look for social plugins on the page
});
FB.Event.subscribe('auth.authResponseChange', function(response) {
if (response.status === 'connected') {
submitform();
} });
};
function submitform() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me?fields=email,name', function(response) {
//submits a form from this page...
});
}
</script>
<a href="javascript:FB.login()" class="facebook-login">Facebook</a>
失败的php是:
$facebook = new Facebook(array(
'appId' => Configuration::$facebook_app_id,
'secret' => Configuration::$facebook_app_secret));
// Get User ID
$user_profile = $facebook->api('/me?fields=name,id','GET');
它似乎工作了一段时间,然后与断开
" [message] => An active access token must be used to query information about the current user.
[type] => OAuthException
[code] => 2500",
有人知道如何稳定这种情况吗?
感谢
可能是因为您的acces令牌过期了?有几种访问令牌类型。如果您的访问令牌是"短期令牌",则必须刷新它。你可以在这里阅读abot acces代币https://developers.facebook.com/docs/facebook-login/access-tokens/在用于facebook的python服务器lib中,我使用方法fetchToken(appId,secret)来刷新我的过期令牌。