首页 文章

尝试获取新的访问令牌时,Nodemailer XOauth2 [错误:unauthorized_client]

提问于
浏览
1

我正在使用带有xoauth2的nodemailer成功通过Gmail发送电子邮件,但是到了获取新访问令牌的时候,我会收到 [Error: unauthorized_client] .

我的代码:

var express = require('express');
var nodemailer = require("nodemailer");
var xoauth2 = require('xoauth2');
app = express();

var generator = xoauth2.createXOAuth2Generator({
    user: {userEmail},
    clientId: {clientId},
    clientSecret: {clientSecret}
    refreshToken: {refreshToken},
    accessToken: {accessToken}
});

var smtpTransport = nodemailer.createTransport({
    service: "gmail",
    auth: {
        xoauth2: generator
    }
});

var mailOptions = {mailOptions} 

app.get('/send',
    function (req, res) {
        generator.generateToken(function (err, token, access) {
            console.log(err, token, access);
            smtpTransport.sendMail(mailOptions, function (error, response) {
                if (error) {
                    console.log(error);
                    res.sendStatus(404);
                } else {
                    console.log(response);
                    res.sendStatus(200);
                }
                smtpTransport.close();
            });
        });
    });

app.listen(5000);

我正在调用generateToken只是为了测试目的 . 但在正常使用中也没有响应 .

我在这里获得了Google Developers clientId和clientSecret,其中我还将https://developers.google.com/oauthplayground/添加到授权重定向URI . 之后我去了开发者游乐场(与重定向uri相同),我选择了带有范围mail.google.com的Gmail API,然后我交换了"Authorization code"以进行刷新和访问令牌,我检查了"Auto-refresh the token before it expires" . 超时完成后(3600秒)我无法使用xoauth2获取新的accessToken .

1 回答

  • 1

    可以标记为已关闭 . 我没有找到这个问题的原因 . 我刚刚在Google Developers Console中删除了该项目并创建了一个新项目 . 在新项目中,我遵循上面描述的相同步骤,并成功获得了访问令牌 .

相关问题