1

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/

当您尝试创建新场合并搜索朋友时,就会出现此问题。由于上述问题,搜索失败。当您尝试创建页面场合时,它也会失败,因为页面不会加载。

4

1 回答 1

1

1) 应用程序将调用callback function,或者重定向到 redirect_url so,如果您指定了redirect_url,请移除

2)根据文档

  • 您必须订阅该活动auth.statuschange

     FB.Event.subscribe('auth.statusChange', function(response) {
     // do something with response
     });
    
  • 当您在每次页面加载时调用它true时,在函数末尾包含 a 是一种不好的做法。getLoginStatus这真正迫使往返电话。因为你有status:truefb.init,你可能不需要那个
于 2013-06-04T11:31:27.060 回答