Facebook本地开发不起作用

时间:2012-04-23 06:57:44

标签: javascript facebook login

我正在努力让这个工作起作用。它曾经,但由于某种原因似乎它再次被打破。我在本地开发时遇到麻烦。还有其他人目前与Facebook本地开发有类似的问题吗?

这些是我的步骤:

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

1 个答案:

答案 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似乎有时会表现得很傻)希望对你有帮助。