【问题标题】:Gmail API Nodejs and PM2 authenticationGmail API Nodejs 和 PM2 身份验证
【发布时间】:2020-07-11 00:54:08
【问题描述】:

我已设置代码以在 Nodejs 中使用 Gmail API 发送电子邮件。它在本地机器上运行良好。它要求通过访问 URL 输入代码。类似的,

Authorize this app by visiting this URL: someURL
Enter the code from that page here: copy-paste code here

这是由 Google 在 Node.js Quickstart for Gmail 之后自动完成的,它会自动生成 token.json。在开发过程中一切正常。

现在在生产中,我使用 PM2 和 Nginx 部署我的应用程序。所以,现在每个节点服务器都在后台运行,并且在文件中生成日志。

我在日志文件Enter the code from that page here:中看到了上面的提示。但是由于日志通过管道传输到文件,我无法粘贴代码,因为我无法访问标准输入。

我尝试从本地生成token.json 并在服务器中使用它,但这似乎不起作用。

我该如何解决这个问题,有什么办法可以解决这个问题吗?

注意:授权和发送邮件的代码可以正常工作。我不在这里发布它,因为我不想让问题变得混乱。

【问题讨论】:

  • 如果你想创建一个不需要用户交互而不是使用常规 OAuth 的服务器应用程序,你可以尝试使用Service Account。如果您坚持对真实用户进行身份验证,您可以在实施 PM2 之前检索token.json 并在之后使用它,我这个前者不适合您吗? “来自本地”是什么意思?
  • 我想我需要使用服务帐户。我在实现 PM2 并在之后使用它之前尝试了“token.json”,它似乎有效。但是到期时会发生什么?本地我的意思是本地主机。还有如何将gmail API与服务帐户一起使用?
  • 如果您想通过服务帐户使用 Gmail API,您需要使用Domain-Wide Delegation,这样您就可以模拟您域中的用户。也可以看看来自 github 12 的这些链接。
  • 好的。谢谢您的帮助。我会继续这个。你能把这个作为答案吗?我会接受的。

标签: node.js google-api gmail-api pm2


【解决方案1】:

如果您尝试制作不需要用户交互而不是使用常规 OAuth 的服务器应用程序,您可以尝试使用 Service Account

虽然考虑到服务帐户本身没有 Gmail API,所以您应该启用Domain-Wide Delegation 来模拟域的另一个用户。

如果您坚持对真实用户进行身份验证,您可以在实施 PM2 之前检索token.json 并在之后使用它。

您还可以查看这两个(12)github 帖子,这也开启了您尝试使用 stdin 验证用户身份的初步想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 2019-06-22
    • 1970-01-01
    • 2021-08-18
    • 2015-06-11
    • 2015-07-13
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多