2

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

这些是我的步骤:

  1. 创建应用
  2. 在“基本信息”部分下,将“本地主机”设置为域(我也尝试将其留空)
  3. 将我的网站设置为http://localhost:8080/
  4. 确保沙盒模式关闭
  5. 我的本地服务器正在运行 Javascript http://localhost:8080/private/,看起来基本上如下所示。
  6. 我还尝试使用 localhost 的替代品(如 myapp.com),在映射到 127.0.0.1 的 etc/hosts 文件中定义它,将 App Domain 设置为“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 之一匹配,或者域必须与应用程序的基域之一相同或其子域。

4

1 回答 1

1

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

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

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

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

于 2012-10-30T01:02:14.430 回答