【问题标题】:Rails: twitter omniauth redirect to localhost in productionRails:twitter omniauth 在生产中重定向到本地主机
【发布时间】: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


【解决方案1】:

很可能您将回调参数发送到服务器错误,或者您已锁定 URL。

检查https://apps.twitter.com/ 并查看应用程序设置下的“回调 URL”和“回调 URL 锁定”的值

【讨论】:

  • 不,一切都设置正确,我对这个 tbh 超级困惑
  • 您的 request_token 调用请求和响应是什么样的?特别是请求中的 oauth_callback 和响应正文中的 oauth_callback_confirmed。
猜你喜欢
  • 2015-04-26
  • 1970-01-01
  • 2012-03-29
  • 2017-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多