2013-06-26 208 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