【发布时间】: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 1 和 2 的这些链接。
-
好的。谢谢您的帮助。我会继续这个。你能把这个作为答案吗?我会接受的。
标签: node.js google-api gmail-api pm2