0

我允许我的用户使用他们的 Facebook 帐户登录我的网络应用程序。

用户通过 Facebook 自动登录到我的网站,如果 -

  • 他们使用 Facebook 注册到我的网站
  • 他们还没有退出我的网站并结束了他们的会话
  • 他们目前已登录 Facebook

这很好,除了在用户访问主页和被带到他们的仪表板之间有一个暂停,同时 Facebook 检查他们是否已经登录。有没有办法显示一种预加载器,上面写着“用 Facebook 登录“在过渡期间?

我正在使用以下 Facebook javascript -

<script>
  window.fbAsyncInit = function() {
              FB.init({
                appId      : 'xxxxxxxxx',
                status     : true, 
                cookie     : true,
                xfbml      : true,
                oauth      : true,
              });

              FB.Event.subscribe('auth.login', function() {
                  FB.api('/me', function(response) {
                window.location='mysite/fb_signin/';
                  });
              });

            };
            (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));

          </script>

谢谢你。

4

2 回答 2

1

使用 facebook api,您可以在调用 FB.api 之前检查用户是否已连接(这需要时间)。

http://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

这应该有帮助

于 2012-01-13T20:15:26.850 回答
0

我同意 Marc 的观点,您可以使用 getLoginStatus() 来帮助您在将它们发送到某个地方之前确定它们是什么。但是,你说有些东西很慢。因此,我查看了您的代码,看来您在 FB.init() 调用中缺少 channelUrl(有关更多信息,请参见https://developers.facebook.com/docs/reference/javascript/)。如果没有 channelUrl 用户与 Javascript SDK 函数的交互,将会变得迟缓和缓慢。

于 2012-01-13T21:22:08.403 回答