在反向代理设置中启用Google登录时如何解决redirect_uri_mismatch错误?

我在服务器 A 上使用 Discourse 创建了一个论坛,并为其分配了一个私有域名 forums-test.com。然后,在服务器 B(域名为 test.com)上,我使用 Nginx 设置了一个反向代理。所有对 test.com/forums/ 的访问都会被转发到服务器 A 上的 forums-test.com。此外,在服务器 B 上,我配置了响应重写,将所有指向 forums-test.com 的链接替换为 test.com/forums/。一切正常,但当我尝试为论坛启用 Google 身份验证时,遇到了 Google 返回 redirect_uri_mismatch 错误的问题。此错误发生的原因是,Google 完成验证后,会尝试调用 test.com/forums/auth/google_oauth2/callback 来将临时令牌传递给 Discourse。然而,在 Discourse 和 Google 之间的数据交换过程中,Discourse 将回调 URL 发送为 forums-test.com/auth/google_oauth2/callback,导致不匹配。此传出请求是从服务器 A 发起的,我无法修改它。我该如何解决这个问题?

在您的 Google Cloud 设置中,如果将网址更改为 forums-test.com/auth/google_oauth2/callback 会怎样?

1 个赞

forums-test.com”域在公共网络中无法访问,因此在我的 Google Cloud 中,我将其设置为 test.com/auth/google_oauth2/callback

1 个赞

有人能帮帮我吗?