对auth.logout的Facebook事件订阅仅选择性地将用户重定向到url

Facebook event subscription to auth.logout only selectively redirects user to a url

本文关键字:选择性 用户 重定向 url logout auth Facebook 事件      更新时间:2023-09-26

因此,我有以下代码,可以在欢迎页面上实现重定向到用户页面的facebook按钮:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'myappid',
      xfbml      : true,
      version    : 'v2.2'
    });
    FB.Event.subscribe('auth.statusChange', function(response) {
      if (response.status === 'connected') {
        window.top.location = 'user url';
      }
    });
  };
  (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>
<div class="fb-login-button" data-max-rows="1" data-size="medium" data-show-faces="false" data-auto-logout-link="true"></div>

该按钮工作正常,并重定向到用户页面。我的用户页面代码是:

<script>
  window.fbAsyncInit = function() {
    FB.init({
      appId      : 'myappid',
      xfbml      : true,
      version    : 'v2.2'
    });
    FB.Event.subscribe('auth.logout', function(response) {
      window.top.location = 'welcome page url';
    });
  };
  (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>
<div class="fb-login-button" data-max-rows="1" data-size="medium" data-show-faces="false" data-auto-logout-link="true"></div>

它向我展示了成功登录后用户页面上的注销按钮,这太棒了。然而,点击facebook注销按钮并不会将我重定向回欢迎页面;它只是停留在用户页面上,只是按钮现在变回了登录按钮。然而,如果我在用户页面中使用fb登录按钮,然后使用fb按钮注销,现在它会将我重定向回欢迎页面。

我不知道为什么fb注销按钮只在我登录用户页面时重定向我,而不是在我通过欢迎页面登录时重定向我。使用fb注销按钮后,是否有不同的重定向方法?正在订阅身份验证。StatusChange和auth.authResponseChange也不起作用。我正在使用RubyonRails,如果重要的话,谢谢!

添加

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

之后

FB.Event.subscribe('auth.logout', function(response) {
  ...
});

在用户视图中,现在注销按钮重定向回欢迎页面。我不知道为什么这样做,因为FB.getLoginStatus部分现在什么都不做。我认为getLoginStatus以某种方式通知/触发/允许FB。Event.subscribe('auth.loog')运行/通知用户未登录。