gpt4 book ai didi

ruby-on-rails - Omniauth/Devise,使用 Twitter 进行身份验证有效,但回调显示失败

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:32 24 4
gpt4 key购买 nike

我将用户发送到 Twitter 以授权我的应用程序使用他们的帐户。

如果用户单击登录并正确进行身份验证,则他们将被发送到失败方法。我仍然可以通过返回的哈希访问他们的 oauth_tokenoauth_token_secret。 (我觉得很奇怪?)

无论用户点击登录还是取消,他们总是被发送回失败方法。

为什么他们在正确验证时没有被发送到成功方法?

在我尝试使用的路由文件中

devise_for :users, :controllers => { :registrations => 'registrations',
:omniauth_callbacks => "authentications" }

但它从不调用创建方法,总是调用失败方法。

我做错了什么?

编辑:authentications_controller.rb

class AuthenticationsController < Devise::OmniauthCallbacksController

def create
render :text => 'yes'
end

def failure
render :text => request.env['omniauth.auth']
end

alias_method :twitter, :create
end

路线.rb

MyApp::Application.routes.draw do
resources :authentications
devise_for :users, :controllers => { :registrations => 'registrations',
:omniauth_callbacks => "authentications" }
resources :users
end

最佳答案

由于您不是在使用纯 OmniAuth,而是在使用 Devise,所以情况有点不同:

  1. 您不需要定义以下路由:

    匹配 '/users/auth/:provider/callback' => 'authentications#create'

  2. Devise 会自动调用名称与提供者相匹配的方法。因此,如果您使用 Twitter 登录,则应该有一个 twitter 方法。如果您使用 Facebook 登录,您应该有一个 facebook 方法。

如果您不希望这种区别,并且希望所有身份验证都指向同一个方法(例如:create),那么您可以在end 你的 Controller :

# authentications_controller.rb
alias_method :facebook, :create
alias_method :twitter, :create

这样,您就不必创建 twitterfacebook 方法。

关于ruby-on-rails - Omniauth/Devise,使用 Twitter 进行身份验证有效,但回调显示失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19296213/

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