2013-06-26 43 views
0

我已经在我的Web应用程序中实现了Facebook。但是,这个错误会持续显示(当facebook未处于活动状态时)。必须使用活动访问令牌来查询有关当前用户的信息。FB访问令牌

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()。不幸的是,它并没有帮助...

+1

如果用户没有先连接到您的应用程序,您无法查询'/ me'的API。 – CBroe

回答

1

您需要在呼叫FB.getLoginStatus的回调中将您的呼叫打包为FB.api,然后仅在用户实际连接时执行该呼叫。

此外,您不能在由用户触发的事件(例如单击事件)之外调用FB.login

0

您必须生成访问令牌。访问令牌告诉Facebook你想要哪个用户,并允许你代表他们提出请求。

您可以manually generate one。或者,您可以为Javascript添加验证过程,可以是found here