【问题标题】:Facebook event subscription to auth.logout only selectively redirects user to a urlFacebook 事件订阅 auth.logout 仅选择性地将用户重定向到 url
【发布时间】:2015-05-28 11:23:35
【问题描述】:

所以我有以下代码在重定向到用户页面的欢迎页面上实现一个 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 注销按钮后是否有其他方式进行重定向?订阅 auth.StatusChange 和 auth.authResponseChange 也不起作用。我正在使用 Ruby on Rails,如果重要,谢谢!

【问题讨论】:

    标签: javascript ruby-on-rails facebook facebook-graph-api redirect


    【解决方案1】:

    添加

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

    之后

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

    在用户视图中有效,现在注销按钮重定向回欢迎页面。我不确定为什么会这样,因为 FB.getLoginStatus 部分现在没有做任何事情。我在想 getLoginStatus 以某种方式通知/触发/允许 FB.Event.subscribe('auth.logout') 运行/通知用户未登录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-16
      • 2012-08-05
      • 2015-05-04
      • 2022-08-22
      • 1970-01-01
      • 2022-11-07
      • 2021-09-18
      • 2018-06-06
      相关资源
      最近更新 更多