gpt4 book ai didi

facebook - 设计和 OmniAuth 记住 OAuth

转载 作者:行者123 更新时间:2023-11-30 05:15:13 25 4
gpt4 key购买 nike

所以,我刚刚通过 https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview 使用 Rails 3、Devise 和 OmniAuth 进行设置。 .

我通过 Facebook 成功验证了用户身份,但尽管标记为:

devise [...]: rememberable, :omniauthable

我试过打电话:

@the_user.remember_me!

...无济于事。没有存储/设置 cookie,这意味着用户不会跨 session 持续存在。

有没有人设法通过 cookie 记住来自 FB 的用户?在我看来,这应该是自动发生的。

感谢你们的任何想法或反馈。

最佳答案

我想详细说明 @jeroen-van-dijk 上面给出的对我有用的(正确)答案。

在 config/routes.rb 中,在 devise_for block 中添加一条新路由:

devise_for :users, :controllers => {
:omniauth_callbacks => "user_omniauth_callbacks" } do
...
get '/users/connect/:network', :to => redirect("/users/auth/%{network}"),
:as => 'user_oauth_connect'

end

然后更改“使用 facebook 登录”链接以使用新路由:

<!-- before it linked to user_omniauth_authorize_path -->
<%= link_to "Sign in using Facebook", user_oauth_connect_path(:facebook) %>

在 app/controllers/user_omnniauth_callbacks_controller.rb

class UserOmniauthCallbacksController < Devise::OmniauthCallbacksController
include Devise::Controllers::Rememberable

def facebook
@user = User.find(...)
...
remember_me(@user) # set the remember_me cookie
end
end

这个解决方案对使用 Rails 3.1 和 Devise 1.4.9 的我来说效果很好。

关于facebook - 设计和 OmniAuth 记住 OAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4475726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com