您好Stackoverflow社区,我有一个流星的谷歌登录问题。

登录流程在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.-在Google控制台上通过应用重定向授权的重定向uri

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

编辑
出现的另一个错误是:

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


因此该应用拒绝了redirectUrl(该域在我的Amazon ec2实例的弹性IP上有一条A记录),我仅在端口80上运行以进行测试

最佳答案

检查环境变量$ 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

关于meteor - meteor 帐户-Google内部服务器错误,仅适用于本地,但不适用于EC2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34185572/

10-17 02:44