【发布时间】:2014-02-13 02:29:56
【问题描述】:
所以我使用 OmniAuth 和 GitHub 策略来处理我的项目的用户身份验证。直接访问 Rails 服务器时,一切正常。我最近设置了 Nginx 来处理我的开发前端和后端服务器之间的代理。现在,当我访问/auth/github 时,OmniAuth 会触发对 GitHub 的请求,但随后在回调中失败:
Started GET "/auth/github/callback?error=redirect_uri_mismatch" for 127.0.0.1 at 2014-01-22 11:54:35 -0800
I, [2014-01-22T11:54:35.365773 #13656] INFO -- omniauth: (github) Callback phase initiated.
E, [2014-01-22T11:54:35.366091 #13656] ERROR -- omniauth: (github) Authentication failure! redirect_uri_mismatch: OmniAuth::Strategies::OAuth2::CallbackError, redirect_uri_mismatch
E, [2014-01-22T11:54:35.366149 #13656] ERROR -- omniauth: (github) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, redirect_uri_mismatch
我已在 GitHub 上我的应用程序设置中将回调 URL 设置为正确的 URL,它显然可以正确地发出请求,只是使用了这个神秘的 redirect_uri_mismatch。
这是我的 Nginx 服务器块:
server {
listen 8080;
server_name localhost;
location / {
proxy_pass http://localhost:9000;
}
location /api/ {
proxy_pass http://localhost:3000;
}
location /auth/ {
proxy_pass http://localhost:3000;
}
}
虽然我是配置 Nginx 的相对菜鸟,但我真的看不出这不应该工作的任何充分理由。
【问题讨论】:
标签: ruby-on-rails github nginx proxy omniauth