orb*_*ven 11 ruby-on-rails devise omniauth
试着跟随https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview,我很难过.
我已经config.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET']
在我的routes.rb中配置了我的config/initializers/devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
devise.rb,并定义了一个OmniAuthCallbacks控制器.
当我访问时user_omniauth_authorize_path(:facebook)
,我得到:
Not found. Authentication passthru.
我不确定接下来该做什么.我没有使用路由全球,所以我不认为我需要定义一个passthru方法,但这样做只给了我404.
Reg*_*ieB 10
还要确保已添加到OmniauthCallbacksController的路由:
devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
Run Code Online (Sandbox Code Playgroud)
并且您已将更新添加到用户模型中的设计声明中:
devise :omniauthable, :omniauth_providers => [:facebook]
Run Code Online (Sandbox Code Playgroud)
所以我在打开一个旧项目之后对此进行了标记,并且在看到我的授权网址之后发布了类似"user/auth/facebook.facebook"之类的内容时,我运行了一个rake路由并通过更改来解决它
<%= link_to "Sign in with Facebook", user_omniauth_authorize_path(:facebook) %>
Run Code Online (Sandbox Code Playgroud)
至
<%= link_to "Sign in with Facebook", user_facebook_omniauth_authorize_path %>
Run Code Online (Sandbox Code Playgroud)
显然,自rake routes
返回命令后,omniauth路由的帮助程序已更改:
user_facebook_omniauth_authorize GET|POST /users/auth/facebook(.:format) omniauth_callbacks#passthru
Run Code Online (Sandbox Code Playgroud)
而不是几个月前我开始这个项目的时候.
user_omniauth_authorize GET|POST /users/auth/facebook(:provider) omniauth_callbacks#passthru
Run Code Online (Sandbox Code Playgroud)
希望这篇文章能帮到别人.
当您尝试使用link_to
请求为GET
.
button_to
将创建表单的位置。link_to
with ,但我建议您使用表单,因为它上面有 CSRF ;method: :post
rails-ujs
小智 6
我有同样的错误.
对我config.omniauth :facebook, ENV['FB_APP_ID'], ENV['FB_APP_SECRET']
有用的是重新启动rails服务器,以反映我对config/initializers/devise.rb所做的更改.
我应该早点列出这个,但我最终采用了“退出并重试”的方法;我删除了与 OmniAuth 相关的所有内容,并按照说明重新开始。我希望我知道什么,特别是我错了,但不幸的是,一旦我重试,它就“起作用了”。
tl;dr 按照https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview 中的步骤进行操作,它应该可以工作
看到Not found. Authentication passthru.
意味着 Omniauth 控制器未捕捉到路线。这很可能是因为路由是通过 GET 到达的,但截至最近,默认情况下仅支持 POST。
天真的答案以及对Google Oauth2 整数的建议是简单地重新启用 GET 请求:
OmniAuth.config.allowed_request_methods = [:get]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12550 次 |
最近记录: |