Rails:twitter omniauth在生产中重定向到localhost

时间:2016-01-23 12:40:08

标签: ruby-on-rails ruby twitter omniauth

我有一个rails应用程序,我的用户可以通过Twitter登录。一切都运作良好,直到现在。当用户已拥有帐户时,他们可以正确登录。问题出在新用户身上。当他们尝试使用Twitter注册时,他们会被重定向到错误的网址。

问题可能来自Omniauth Callbacks,但我找不到它......

这是我的配置:

应用/控制器/ 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

应用/模型/ 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显然是一个问题;

有什么想法吗?我找不到什么错,在我的回叫控制器中一切似乎都没问题。

1 个答案:

答案 0 :(得分:1)

很可能你要么将回调参数发送到服务器错误,要么你已经锁定了URL。

检查https://apps.twitter.com/并在应用程序设置下查看“回拨网址”和“回拨网址已锁定”的值