【发布时间】:2012-04-23 06:57:44
【问题描述】:
我想尽办法让它发挥作用。它曾经是,但由于某种原因,它似乎又坏了。我只是在本地开发时遇到了麻烦。目前还有其他人在 Facebook 本地开发方面遇到类似问题吗?
这些是我的步骤:
- 创建应用
- 在“基本信息”部分下,将“本地主机”设置为域(我也尝试过将此留空)
- 将我的网站设置为
http://localhost:8080/ - 确保沙盒模式已关闭
- 我的本地服务器在
http://localhost:8080/private/运行 Javascript,基本上如下所示。 - 我还尝试使用 localhost 的替代品(如 myapp.com),在映射到 127.0.0.1 的 etc/hosts 文件中定义它,将应用程序域设置为“myapp.com”并使用站点“http:// /myapp.com:8080/' 没有运气。
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 之一匹配,或者 域必须与其中一个域相同或其子域 应用程序的基域。
【问题讨论】:
-
画布iframe中加载了正确的地址(localhost:8080/private)?您没有收到错误,getLoginStatus 只是没有返回任何响应?你确定方法已经执行了吗?
-
我没有通过 FB 画布测试这个 - 这是直接在 localhost:8080/private 加载网页。我确定调用已执行,因为我在 Firebug 中有一个断点。
-
向 getLoginStatus 添加第二个参数,例如:FB.getLoginStatus(function(response) { ... }, true) 并检查在 firebug 的网络选项卡中,请求和响应是什么
-
感谢您指出如何执行此操作 - 我已经添加了上面的错误响应(这没有任何意义,因为我在页面上添加了 localhost 作为域)
-
好的,让我们确保:在应用程序设置中,您的网站是“localhost:8080/”,在应用程序域中,您有“localhost”,并且您将浏览器定向到“localhost:8080/private” “, 那是对的吗?此外,请确保您使用的是正确的应用 ID,而不是您可能拥有的其他应用的 ID。
标签: javascript facebook login