繁体   English   中英

使用 Google OAuth2 将 Node.js 应用程序部署到 Heroku 时出现 redirect_uri_mismatch

[英]I'm getting a redirect_uri_mismatch when deploying my Node.js app to Heroku using Google OAuth2

我的任务是使用 Node.js 创建一个服务器,它将读取来自 Google 帐户的电子邮件并将这些电子邮件中的内容解析为我们可以存储在数据库中的数据。 我在 NPM 中使用 Google 的googleapis包 (v103.0.0) 来验证/授权我们想要使用的任何帐户。

当我们尝试切换帐户并让用户重新授权时,问题就出现了。 在本地机器上开发期间,Auth 过程按预期工作:

  1. 客户端请求一个 Auth URL。
  2. 服务器生成一个新的 Auth URL 并将其发送回客户端。
  3. 客户端重定向到该 URL 并显示 Google 同意屏幕。
  4. 要求客户在已登录的 Google 帐户之间进行选择。
  5. 客户端授权应用程序并使用代码重定向回服务器。
  6. 服务器使用代码生成/保存令牌,从而允许它使用 Gmail API。

但是,在部署到 Heroku 后,Google 同意屏幕不再允许用户选择帐户。 相反,在第 3 步,它会显示此消息 在与此错误相关的几乎所有其他问题中,错误代码/消息下方总是有其他信息,但对我来说什么都没有。 我确保:(1) 我在 Heroku 中使用的域在 Google Cloud Console 上得到验证,并且 (2) Node.js 应用程序中的 redirect_uri 将正确的域传递给 Auth URL,即使在生产中也是如此。


出于隐私原因,我无法提供网址,但如果我应该包含任何源代码或 Cloud Console 信息,请告诉我。

发布此问题后不久,我意识到我使用了不正确的 OAuth 2.0 客户端 ID 类型。 当我应该使用“Web 应用程序”时,我试图使用“桌面”。 看看这张图片,看看有什么不同。

当您选择“Web 应用程序”时,您会看到一些新选项:授权的 JavaScript 来源和授权的重定向 URI。 这是您需要填写允许的 URI 的地方。 这是应该是什么样子的示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM