【问题标题】:How do I resolve the Google OAuth "redirect_uri_mismatch" error?如何解决 Google OAuth“redirect_uri_mismatch”错误?
【发布时间】:2018-03-22 21:54:39
【问题描述】:

我未能为我的 Meteor 应用程序配置我的 Google OAuth。

几周前我成功地设置了它,当时它运行良好,但现在突然之间我似乎无法正确配置它。

我已经通过 ngrok 隧道化了我的应用程序。我将逐步说明我如何进行设置。请指出做错了什么以及我可以做些什么来纠正这个问题。

我从我的终端开始。我使用以下方式启动应用程序:

meteor --port 7000

我打开另一个终端并使用以下命令启动 ngrok:

./ngrok http 7000

这会产生

在我的 Meteor.startup 中添加以下代码:

../client/main.js

Meteor.startup(function () {
  // Client startup method.

  METEOR_OFFLINE_CATALOG=1;
  METEOR_PROFILE=1;

  Meteor.absoluteUrl.defaultOptions.rootUrl ='http://41958975.ngrok.io';
  //
});  

当我输入时在我的浏览器控制台中:

Meteor.absoluteUrl()

我明白了

我现在将http://41958975.ngrok.io 链接粘贴到浏览器中并得到这个:

点击按钮后面跟着:

由于之前已经完成了步骤 1 到 5,我直接跳到步骤 6、7 和 8。

...并通过粘贴客户端 ID 和客户端密码完成

然后点击保存配置。结果是:

现在,当我点击 使用 google 登录 按钮时:这会弹出,就像它应该发生的那样。

我单击其中一个帐户选项。这就是一切都变得疯狂的时候!我被重定向回 使用 google 登录 按钮(登录页面),并显示此错误消息

查看终端,我也收到此错误消息:

我似乎无法超越这一点。 我做错了什么,我该如何超越这一点?

期待您的帮助。

【问题讨论】:

标签: meteor google-oauth meteor-accounts ngrok


【解决方案1】:

您在运行应用程序时忘记修改 ROOT_URL。您最后一个屏幕截图的第一行清楚地显示了它:

App running at: http://localhost:7000/

客户端上设置absoluteUrl不会有帮助,因为尝试获取令牌的是你的服务器

uses OAuth._redirectUri() function 得到redirect_uri,然后是Meteor.absoluteUrl() is used(它需要来自环境变量的ROOT_URL,如documentation 中所述)。

因此,您的 redirect_uri 变为 http://localhost:7000/_oauth/google 并且 显然与 http://41958975.ngrok.io/_oauth/google 不匹配(步骤 #7)。

要解决这个问题,您应该像这样启动 Meteor 应用程序:

ROOT_URL="http://41958975.ngrok.io" meteor

【讨论】:

    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2015-04-03
    • 2020-11-08
    • 2019-07-14
    • 2021-06-14
    • 2012-07-14
    相关资源
    最近更新 更多