Facebook在授权后不会重新加载画布

时间:2014-05-23 11:01:59

标签: javascript facebook-graph-api

我在画布应用程序上有以下JavaScript,如果用户未登录则会被调用(通过php检查)。

<script>
      window.fbAsyncInit = function() {
        FB.init({
          appId      : '(appid)',
          xfbml      : true,
          version    : 'v2.0'
        });


        FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    console.log('Logged in.');
  }
  else {
  FB.Event.subscribe('auth.statusChange',function(response) {
        if (response.authResponse) {
        setTimeout('window.location.reload()',0);
        };
        });
  FB.login(function(){}, {scope: 'email,user_birthday,user_friends'});
  }
});
      };

      (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>

问题是即使我告诉它这样做,窗口也不会重新加载。我知道按下&#34; login&#34;后会调用该函数。并接受权限,因为如果我包含并警告它在那时显示。

正如您所看到的,我已经尝试将其包装在setTimeout中,但这并不起作用。

如果我在此之后按F5,页面会重新加载并且我已登录。

帮助!

1 个答案:

答案 0 :(得分:1)

事实证明,我所要做的就是改为:

top.location.href="https://apps.facebook.com/appname";

而不是window.location.reload()

这也可以防止浏览器询问是否应该重新提交数据。