Gmail API Nodejs 和 PM2 身份验证

Gmail API Nodejs and PM2 authentication

我已设置代码以在 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.

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

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

您也可以看看这两个 (1 and 2) github 帖子,这也开启了您尝试使用 stdin 对用户进行身份验证的初步想法。