【问题标题】:Facebook local development not workingFacebook本地开发不起作用
【发布时间】:2012-04-23 06:57:44
【问题描述】:

我想尽办法让它发挥作用。它曾经是,但由于某种原因,它似乎又坏了。我只是在本地开发时遇到了麻烦。目前还有其他人在 Facebook 本地开发方面遇到类似问题吗?

这些是我的步骤:

  1. 创建应用
  2. 在“基本信息”部分下,将“本地主机”设置为域(我也尝试过将此留空)
  3. 将我的网站设置为http://localhost:8080/
  4. 确保沙盒模式已关闭
  5. 我的本地服务器在 http://localhost:8080/private/ 运行 Javascript,基本上如下所示。
  6. 我还尝试使用 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


【解决方案1】:

我遇到了与您描述的完全相同的错误,这让我发疯了。您必须确保 Canvas 或页面 URL 中的 Facebook URL 与您在浏览器中输入的内容完全匹配

在我的情况下,我在地址栏中的 URL 中添加了一个“www”(例如 wwww.domain.com/MyApp),但在 Facebook 开发人员设置下,我只是将 domain.com/MyApp 作为我的页面 URL,没有www 前缀。这种微妙的差异是导致错误的原因。您的情况可能会发生类似的情况。

如果您通过 localhost 进行测试,我建议您创建一个新应用并将其作为生产应用的测试版本。这样,您可以在各自的应用程序下拥有您的 PROD url 和 TEST url,以免事情变得混乱。

另外,我建议使用带有自定义虚拟目录的 IIS 进行调试,以便您在端口 80 上运行。(如果您使用 443 或 80 以外的任何端口,Facebook 有时会表现得很愚蠢)希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多