2016-01-23 31 views
1

我有一个Rails应用程序,我的用户可以通过twitter登录。一切都很好,直到现在。当用户已经拥有一个账户时,他们可以正确登录。问题出在新用户身上。当他们尝试注册Twitter时,他们被重定向到一个错误的网址。Rails:twitter omniauth重定向到生产中的localhost

的问题可能来自Omniauth回调,但我不能找到它...

这里是我的配置:

应用程序/控制器/ 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显然是一个问题;

任何想法?我找不到有什么问题,我的回拨控制器中的一切似乎都没问题。

+1

下的“回调网址锁定”值。这是一个很宽泛的问题,有点不清楚,因为这样会导致猜测。你说“一切都很好,直到现在”,但不要说改变了什么。你能回复吗?如果是这样,问题就消失了吗?导致问题的原因是什么改变了?你做了一个改变然后测试,或者做一堆改变然后测试? –

回答

1

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

检查https://apps.twitter.com/,并参阅“回调网址”和应用程序设置

+0

不是,一切都设置正确,我对这一个超级困惑tbh – zacchj

+0

你的request_token调用请求和响应是什么样的?请求中的oauth_callback和响应正文中的oauth_callback_confirmed。 –

相关问题