Facebook在获得授权后不会重新加载canvas

Facebook doesn't reload canvas after authorization

本文关键字:新加载 加载 canvas 授权 Facebook      更新时间:2023-09-26

我在一个canvas应用程序上有以下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>

问题是,即使我告诉它这样做,窗口也不会重新加载。我知道这个函数是在按下"login"并接受权限后被调用的,因为如果我包含并发出警告,它会在那个点显示。

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

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

帮助!

结果是,我所要做的就是更改为:

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

代替window.location.reload()