Facebook Javascript SDK - getLoginStatus不能始终如一地工作

时间:2015-04-09 14:58:45

标签: javascript facebook-graph-api backbone.js facebook-javascript-sdk

我意识到在这个问题上有类似的问题,但没有一个能完全解决我遇到的问题。

首先,如果我完全按照SDK文档中的示例进行操作,那么一切似乎都能正常工作。以下是工作代码供参考:

 <script>

   window.fbAsyncInit = function() {
    FB.init({
      appId      : 'your-app-id',
      xfbml      : true,
      version    : 'v2.3'
    });


    FB.getLoginStatus(function(response) {
        console.log(response);
    });
  };

  (function(d, s, id){
     var js, fjs = d.getElementsByTagName(s)[0];
     if (d.getElementById(id)) return;
     js = d.createElement(s); js.id = id;
     js.src = "//connect.facebook.net/es_LA/sdk.js";
     fjs.parentNode.insertBefore(js, fjs);
   }(document, 'script', 'facebook-jssdk'));
</script> 

我的问题是,我正在使用BackboneJS应用程序,我希望能够使用我现有的代码库。我已经尝试修改代码,以便在初始化SDK之后初始化全局Facebook帮助程序对象,然后我尝试使用该帮助程序对象来访问SDK(FB.getLoginStatus(),FB.login()等)。通常,这些调用是在骨干视图中处理事件的结果。像这样:

var MyView = Backbone.View.extend({
    events: {
        "click my-fb-login-button": "onFbLoginClick"
    },

    ... More code here

    onFbLoginClick: function() {
        // Doesn't work
        Facebook.login(function(response) {
           console.log("Nope!");
        }) // calls getLoginStatus(), Login(), etc.

        // Also doesn't work. Callback is never invoked, no errors
        FB.getLoginStatus(function(response) {
            console.log("NEVER GETS HERE");
        );

        // Also, doesn't work. Brings up a pop-up in the browser
        // which is blank.
        FB.login(function(response) {});
    }
});

我尝试过使用调试SDK,跟踪代码并且没有发现任何有用的东西。我想如果我做错了,我会认为我会看到一个javascript错误。有什么我从根本上误解了吗?

我尝试在本地运行此代码,我的Facebook App的网站网址设置为localhost。我也尝试将其部署到heroku并通过SSL运行它。结果相同。

谢谢!

0 个答案:

没有答案