【发布时间】:2016-04-30 01:10:20
【问题描述】:
我有一个 Rails 应用程序,我的用户可以通过 twitter 登录。到目前为止,一切都运行良好。当用户已经有一个帐户时,他们可以正确登录。问题在于新用户。当他们尝试使用 twitter 注册时,他们会被重定向到错误的 URL。
问题可能来自 Omniauth 回调,但我找不到它...
这是我的配置:
app/controllers/omniauth_callbacks_controller.rb
class OmniauthCallbacksController < Devise::OmniauthCallbacksController
def all
user = User.from_omniauth(request.env["omniauth.auth"])
if user.persisted?
flash.notice = "Signed in!"
sign_in_and_redirect user
else
session["devise.user_attributes"] = user.attributes
redirect_to new_user_registration_url
end
end
alias_method :twitter, :all
end
app/models/user.rb
def self.from_omniauth(auth)
user = find_or_initialize_by(provider: auth.provider, uid: auth.uid)
user.name = auth.info.nickname
user.image = auth["info"]["image"].sub("_normal", "")
user.save
user
end
def self.new_with_session(params, session)
if session["devise.user_attributes"]
new(session["devise.user_attributes"]) do |user|
user.attributes = params
user.valid?
end
else
super
end
end
好吧,正如我所说,在开发中它运行良好,当我尝试使用 Twitter 帐户注册时,用户被很好地重定向到:http://localhost:3000/users/sign_up 但在生产中,如果用户注册,他将被重定向到http://localhost/users/sign_up 显然是个问题;
有什么想法吗?我找不到问题所在,在我的回调控制器中似乎一切正常。
【问题讨论】:
-
这是一个广泛的问题,有些不清楚,因此会导致猜测。你说“到目前为止一切都很好”,但不要说发生了什么变化。你能恢复吗?如果是这样,问题会消失吗?是什么改变导致了问题?您是先进行更改然后进行测试,还是进行大量更改然后进行测试?
标签: ruby-on-rails ruby twitter omniauth