oauth - 在 nodemailer 中通过 gmail oauth 发送电子邮件需要哪个范围?

标签 oauth scope smtp gmail nodemailer

我已经设置了 google 帐户的身份验证,并且能够获取用户的访问和刷新 token ,但是当我将范围设置为仅 https://www.googleapis.com/auth/gmail.send 时它不起作用,但是当我将身份验证范围设置为 https://mail.google.com/ 时然后它可以正常工作。这里发生了什么?为什么我不能只使用发送范围通过 nodemailer 发送电子邮件?这是我的代码:-

var nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 587,
    secure: false,
    requireTLS: true,
    auth: {
        type: 'OAuth2',
        clientId: 'my_client_id',
        clientSecret: 'my_client_secret'
    }
});

transporter.sendMail({
    from: 'user@gmail.com',
    to: 'target@gmail.com',
    subject: 'Message',
    text: 'Hi there',
    auth: {
        user: 'user@gmail.com',
        refreshToken: 'user_refresh_token',
        accessToken: 'user_access_token'
    }
}).catch(error => {
    console.log(error);
});

最佳答案

Nodemailer 文档中有一条注释,指出范围必须是“https://mail.google.com/”:https://nodemailer.com/smtp/oauth2/#troubleshooting

而且它实际上是由谷歌在这里指定的:https://developers.google.com/gmail/imap/xoauth2-protocol

关于oauth - 在 nodemailer 中通过 gmail oauth 发送电子邮件需要哪个范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58835495/

相关文章:

ios - 适用于 iOS 的 oAuth 2.0 库

java - Java 枚举成员

用于设置词汇表的 PHP OO 类

javascript - 从自己的服务器发送电子邮件到互联网

python-3.x - heroku smtplib 需要登录浏览器

c++ - 使用 SMTP 协议(protocol)和 boost 库发送电子邮件

grails - 如何将 OAuth 身份验证与 Spring Security 联系起来

c# - 如何使用 C# (dotnet core 3.1) 进行 OAuth 1 Twitter API 调用

c# - 从 C# 到 Twitter 的 Hello World

javascript - Safari 扩展 - 更改预定义的 Javascript 变量值