首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有登录omniauth-facebook

没有登录omniauth-facebook
EN

Stack Overflow用户
提问于 2013-07-15 16:37:24
回答 2查看 127关注 0票数 2

我关注了Ryan's cast on signing in with omniauth-facebook,登录效果很好。

然而,我遇到的问题是保持登录状态。现在,在关闭浏览器窗口之前,我一直处于登录状态。如果我再次打开浏览器并返回到我的网站,我就会注销。在其他机器和其他Facebook账户上的其他人也是如此。

我不太熟悉会话和Facebook身份验证的工作原理,所以我很难分析到底出了什么问题。

也许你们中的一些人知道发生了什么?提前感谢!

我的代码:

application_controller:

代码语言:javascript
复制
def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user

sessions_controller:

代码语言:javascript
复制
def create
 user = User.from_omniauth(env["omniauth.auth"])
 session[:user_id] = user.id
 redirect_to root_url
end

user.rb:

代码语言:javascript
复制
def self.from_omniauth(auth)
  where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user|
    user.provider = auth.provider
    user.uid = auth.uid
    user.name = auth.info.name
    user.email = auth.info.email
    user.pic_url = auth.info.image
    user.oauth_token = auth.credentials.token
    user.oauth_expires_at = Time.at(auth.credentials.expires_at)
    user.save!
  end
end

omniauth.rb:

代码语言:javascript
复制
OmniAuth.config.logger = Rails.logger

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, CONFIG[:facebook_app_id], CONFIG[:facebook_app_secret], scope 'email', display: 'popup'
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-15 22:14:17

It's straight in the Devise wiki

SessionsController do中注册

代码语言:javascript
复制
remember_me(user)

并确保在用户模型中将:rememberable作为Devise选项传递。

附注-我认为你使用的是相当过时的流程,现在鼓励的解决方案是有OmniauthCallbacksController我认为。

票数 1
EN

Stack Overflow用户

发布于 2013-07-15 17:44:16

这里可能出现的问题是,当您关闭浏览器时,会话将过期。

为什么你不能使用devise gem来给用户签名。

如果你为你的用户表使用了devise gem,你会得到一个叫做"Remeber“的选项,当用户登录时,你可以将这个标志设置为true。

有关devise的详细信息,请参阅- https://github.com/plataformatec/devise

这可能会解决你的问题。

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

https://stackoverflow.com/questions/17649938

复制
相关文章

相似问题

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