我已将facebook应用到我的网络应用中。但是,这一个错误不断出现(当facebook未处于活动状态时)。必须使用活动访问令牌来查询有关当前用户的信息。
An active access token must be used to query information about the current user.
这是我的Facebook JS:
window.fbAsyncInit = function()
{
FB.init({
appId : '<?php echo AppInfo::appID(); ?>',
channelUrl : "<?php //echo URL.'scripts/facebook/channel.php'; ?>",
status : false,
cookie : true,
xfbml : false
});
FB.api('/me',function(){});
FB.Event.subscribe('auth.authResponseChange', function(response) {
if (response.status === 'connected')
{
window.location.replace("<?php echo Router::$url; ?>");
}
else if (response.status === 'not_authorized')
{
FB.login(function(response){}, {scope:'email'});
}
else
{
FB.login(function(response){}, {scope:'email'});
}
});
};
(function(d, s, id)
{
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
{
return;
};
js = d.createElement(s);
js.id = id;
js.src = "<?php echo URL.'scripts/facebook/all.js'; ?>";
fjs.parentNode.insertBefore(js, fjs);
}
(document, 'script', 'facebook-jssdk'));
我在网上搜索了FB.api()
。不幸的是,它没有帮助......
答案 0 :(得分:1)
您需要将回调中的FB.api
打包到FB.getLoginStatus
,然后仅在用户实际连接时执行。
此外,您无法在用户触发的事件之外调用FB.login
,例如点击事件。
答案 1 :(得分:0)
您必须生成访问令牌。访问令牌告诉Facebook您想要哪个用户,并授予您代表他们发出请求的权限。
你可以manually generate one。或者,您可以为Javascript添加可以found here的身份验证过程。