Meteor帐户 - 谷歌内部服务器错误,适用于本地但不适用于EC2

时间:2015-12-09 17:48:18

标签: meteor oauth google-oauth meteor-accounts

您好Stackoverflow社区,我对Meteor的谷歌登录有疑问。

登录流程在localhost中完全正常,但不在部署中。

我在Meteor的控制台上收到以下错误:

Exception while invoking method 'login' Error: Failed to complete OAuth handshake with Google. failed [400] {   "error" : "redirect_uri_mismatch" }
at getTokens (packages/google/google_server.js:59:1)
at Object.ServiceConfiguration.configurations.findOne.service [as handleOauthRequest] (packages/google/google_server.js:10:1)
at OAuth._requestHandlers.(anonymous function) (packages/oauth2/oauth2_server.js:8:1)
at middleware (packages/oauth/oauth_server.js:173:1)
at packages/oauth/oauth_server.js:146:1

这是我的故障排除的当前清单:

1.-使用loginStyle'popup'

在db.meteor_accounts_loginServiceConfiguration上更正客户端ID和客户端密码 当弹出窗口打开时,

2.- redirect_uri设置为正确的端点(http://example.com/_oauth/google)。

3.-重定向uri授权应用程序在谷歌控制台上的重定向

我的一个观察是,如果将loginStyle改为重定向而不是弹出,在google oauth重定向到我的redirect_uri之后,我的redirect_uri再次重定向到localhost而不是经典的* / _ oauth / google窗口(登录已完成。点击此处关闭此窗口。)

EDIT 出现的另一个错误是:

Error in OAuth Server: redirectUrl (http://example.com/users) is not on the same host as the app (http://localhost:80/)

所以应用程序拒绝redirectUrl(该域有一条A记录到我的amazon ec2实例的弹性IP),我只在端口80上运行以进行测试

1 个答案:

答案 0 :(得分:1)

检查环境变量$ ROOT_URL的设置。如果未正确设置,这可能会影响预期的重定向URL。

我使用google oauth弹出窗口并在我的授权重定向URI中使用此字符串:

http://example.org
http://example.org/_oauth/google?close

编辑:

即使我将ROOT_URL设置为环境变量,Meteor也不会使用我的ROOT_URL。

解决方案正在运行流星:

$ ROOT_URL='https://example.org' meteor