繁体   English   中英

Omniauth-facebook并不总是注销用户

[英]Omniauth-facebook does not always logout user

我试图让我的注销按钮根据railscast#360中显示的说明退出app和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

通过添加:修复此问题

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

到会话控制器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM