Facebook FB.getLoginStatus不会触发回调

时间:2016-06-01 22:51:19

标签: javascript facebook google-chrome facebook-graph-api

我知道Stackoverflow上有一些类似的问题,但我在其中任何一个都没有解决方案,而且我现在非常绝望。 我正在写一个Facebook应用程序,到目前为止它的工作非常整洁。但FB.getLoginStatus函数不会为某些用户(一小部分)触发回调。我能够在一台机器上重现这个错误,它只发生在那里,只在Chrome上发生。另一位用户也只在Chrome上遇到此问题。我发现,如果我在自己的页面上移动Facebook API代码它是有效的(对此没有解释,我注释掉了其余的代码,它确实有时工作,但很多时候没有)。所以我将所有内容移动到一个自己的页面,并将我通过getLoginStatus函数获取的数据发送到另一个页面。这确实适用于我的电脑,但我的数据库中仍然有一些条目,它不适用于其他用户。 我不知道为什么回调没有被调用,我希望你可以帮助我,谢谢你提前!

TLDR:Facebook API不会在FB.getLoginStatus函数中触发回调。这只发生在一小部分机器上,我只能用2台机器(在Chrome上,不同的用户帐户,不同的操作系统)重现它。这是我正在使用的代码:https://jsfiddle.net/zfyb3zy4/

<script>
            window.fbAsyncInit = function() {
            FB.init({
              appId      : '99999999999999999999',
              xfbml      : true,
              version    : 'v2.6'
            });
            FB.getLoginStatus(function(response) {
              if (response.status === 'connected') {
                  localStorage.setItem("f_uid", response.authResponse.userID);
                  FB.api(response.authResponse.userID+"?fields=id,name,email",function(response) {
                      //window.location.href="game.html";
                      localStorage.setItem("name",response.name);
                      localStorage.setItem("email",response.email);
                });
              }
              else {
                FB.login(function (response)
                {
                    if (response.authResponse == null)
                        top.location.href="https://www.facebook.com/anexiagmbh";
                    localStorage.setItem("f_uid", response.authResponse.userID);
                    FB.api(response.authResponse.userID+"?fields=id,name,email",function(response) {
                        //window.location.href="game.html";
                        localStorage.setItem("name",response.name);
                        localStorage.setItem("email",response.email);
                    });
                }
                ,{scope: 'email'});
              }
            }, true);
          };

        function onLogin(response) {
          if (response.status == 'connected') {
            FB.api('/me?fields=first_name', function(data) {
                  var welcomeBlock = document.getElementById('fb-welcome');
                  welcomeBlock.innerHTML = 'Hello, ' + data.first_name + '!';
            });
          }
        }
          (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/en_US/sdk.js";
             fjs.parentNode.insertBefore(js, fjs);
           }(document, 'script', 'facebook-jssdk'));
        </script>

0 个答案:

没有答案