我正在努力让这个工作起作用。它曾经,但由于某种原因似乎它再次被打破。我在本地开发时遇到麻烦。还有其他人目前与Facebook本地开发有类似的问题吗?
这些是我的步骤:
http://localhost:8080/
http://localhost:8080/private/
运行Javascript,看起来基本上就像下面一样。FB.getLoginStatus()调用未返回,或仅偶尔返回。它始终适用于生产服务器。
function myAppInit() {
console.log("Facebook loaded; initializing sdk.");
//Initialize FB SDK
FB.init({
appId:_FbAppId, //This is valid and matches app ID
cookie:true,
status:true,
xfbml:true,
oauth:true
});
//Query for login status.
FB.getLoginStatus(function(response) {
updateLoginStatus(response); //This is hit randomly
});
//Set our standard callback for auth change status
FB.Event.subscribe('auth.authResponseChange', function(response) {
updateLoginStatus(response); //This is hit randomly
});
}
$(document).ready(function(){
window.fbAsyncInit = myAppInit;
(function(d){
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
}
编辑:检查FB.getLoginStatus(..)的响应后,它返回:
应用程序配置不允许使用URL:一个或 应用程序不允许使用更多给定的URL 组态。它必须与Connect或Canvas URL之一匹配 域名必须与其中一个域名或子域名相同 应用程序的基本域。
答案 0 :(得分:1)
我有同样的错误,你正在描述它,这让我疯了。您必须确保您的Canvas或Page URL中的Facebook网址与您在浏览器中输入的内容匹配完全。
在我的情况下,我在地址栏中的URL中添加了“www”(例如wwww.domain.com/MyApp),但在Facebook Developer设置下我只使用domain.com/MyApp作为我的页面URL www前缀。这种微妙的差异是导致错误的原因。在你的情况下,某些事情可能会发生类似的事情。
如果您是通过localhost进行测试,我建议您创建一个新应用并将其作为生产应用的测试版。这样,您可以将PROD网址和您的TEST网址放在相应的应用下,以免事情变得混乱。
另外,我建议使用IIS和自定义虚拟目录进行调试,以便在端口80上运行。(如果你使用443或80以外的任何东西,Facebook似乎有时会表现得很傻)希望对你有帮助。