2013-05-26 38 views
1

Facebook Javascript API在画布中失败,但在我直接访问应用程序时工作正常。每当我尝试创建一个Facebook查询时,我都会收到“访问令牌需要请求此资源”错误。我试过getLoginStatus,但回调从未在画布中被调用。但它确实在直接网页中被调用。看到这段代码:Facebook:仅在画布中请求“访问令牌才能请求此资源”

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

您将放入JS代码中的应用程序ID与实际在画布中加载的应用程序相同?你能给我们链接到FB上的应用程序吗? – CBroe

+0

是的,应用程序ID是正确的。我将禁用沙盒模式并在问题中发布链接... –

+0

嗯,当我尝试时搜索工作正常。 –

回答

1

1)应用程序将或者调用callback function,否则会根据docs

  • 2)重定向到redirect_url 所以,如果你指定的redirect_url,请取出

    必须subsscribe到事件auth.statuschange

    FB.Event.subscribe('auth.statusChange', function(response) { 
    // do something with response 
    }); 
    
  • getLoginStatus函数的末尾包含true是一种不好的做法,因为您在每次加载页面时调用它。这真的迫使往返电话。由于您在fb.init中有status:true,因此您可能不需要
+0

对不起,但我不明白你的意思第一部分,我尝试了'FB.Event.subscribe('auth.statusChange'...'但回调没有被调用 –

+0

你有没有提到你的fb登录的任何redirect_url?你能直接输入你直接打的URL吗?你的问题中的链接404 – 2013-06-04 19:32:47

+0

问题发生在本地版本上,重定向是http:/ /0.0.0.0:5000/login。 –

相关问题