首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Omniauth-facebook并不总是注销用户

Omniauth-facebook并不总是注销用户
EN

Stack Overflow用户
提问于 2012-07-26 18:59:17
回答 1查看 1.5K关注 0票数 3

我正试图让我的注销按钮,以注销的应用程序和facebook的基础上,说明显示在铁路#360。当我点击它的时候,这个应用程序看起来是注销的,但是我的facebook会话仍然存在。每隔五次,用户就会从facebook注销一次。我怀疑这与调用FB.logout()函数时未销毁的facebook cookie有关,因为当我手动删除该cookie时,用户将被从facebook注销。也许这是一个时间问题,因为这是异步的?有什么建议吗?以下是相关代码:

application.html.erb

代码语言:javascript
复制
    <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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-06 19:44:20

修正这一点,增加如下:

代码语言:javascript
复制
  def destroy
    session[:user_id] = nil
    sleep 3
    redirect_to root_url
  end

到会话控制器

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11676233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档