【问题标题】:Omniauth-facebook does not always logout userOmniauth-facebook 并不总是注销用户
【发布时间】:2012-07-26 18:59:17
【问题描述】:

我正在尝试让我的注销按钮根据 railscast #360 中显示的说明从应用程序和 Facebook 中注销。当我单击它时,该应用程序似乎要注销,但我的 Facebook 会话仍然存在。每隔五次,用户就会退出 Facebook。我怀疑这与调用 FB.logout() 函数时 facebook cookie 没有被破坏有关,因为当我手动删除该 cookie 时,用户将退出 facebook。也许这是一个时间问题,因为这是异步的?有什么建议么?以下是相关代码:

application.html.erb

    <div id="fb-root"></div>
    <script>

    window.fbAsyncInit = function() {
        FB.init({
            appId      : '(**myappid**)', // App ID
            status     : true, // check login status
            cookie     : true // enable cookies to allow the server to access the session
        });

        $('#sign_in').click(function(e) {
            e.preventDefault();
            return FB.login(function(response) {
                if (response.authResponse) {
                    return window.location = '/auth/facebook/callback';
                }
            });
        });

        return $('#sign_out').click(function(e) {
            FB.getLoginStatus(function(response) {
                if (response.authResponse) {
                    return FB.logout();
                }
            });
            return true;
        });
    };
     </script>

sessions_controller.rb

class SessionsController < ApplicationController

      def create
        user = User.from_omniauth(env["omniauth.auth"])
        session[:user_id] = user.id
        redirect_to root_url
      end

      def destroy
        session[:user_id] = nil
        redirect_to root_url
      end
    end

【问题讨论】:

    标签: ruby-on-rails facebook omniauth


    【解决方案1】:

    通过添加解决此问题:

      def destroy
        session[:user_id] = nil
        sleep 3
        redirect_to root_url
      end
    

    到会话控制器

    【讨论】:

    • 不,它不会注销。登录后,我们必须打开 facebook.com 并在此处执行注销以注销。
    猜你喜欢
    • 1970-01-01
    • 2015-07-16
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多