Facebook Javascript API在画布中失败,但在我直接访问应用程序时工作正常。每当我尝试进行facebook查询时,我都会收到“请求此资源需要访问令牌”错误。我试过getLoginStatus
,但回调永远不会在画布中被调用。然而,它确实在直接网页中被调用。看到这段代码:
window.fbAsyncInit = function() {
FB.init({
appId : '{{ app_id }}', // App ID
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
frictionlessRequests : true
});
console.log("INIT");
FB.getLoginStatus(function(response) {
alert("GOT STATUS");
alert(response);
},true);
};
(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 = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
始终输出“INIT”,但仅在我直接访问页面时调用警报。
编辑:以下是有问题的应用:https://apps.facebook.com/quirkyversaries/
当您尝试创建新场合并搜索朋友时,会出现此问题。由于上述问题,搜索失败。当您尝试创建页面时,它也会失败,因为页面将无法加载。
答案 0 :(得分:1)
1)应用会调用callback function
,或者会重定向到redirect_url
所以,如果你指定了redirect_url
,请删除
2)根据docs
您必须订阅活动auth.statuschange
FB.Event.subscribe('auth.statusChange', function(response) {
// do something with response
});
true
函数的末尾包含getLoginStatus
是不好的做法,因为您在每次加载页面时都会调用它。这是真的迫使往返电话。由于您在fb.init中有status:true
,因此您可能不需要