Google oauth 2.0 API密码更改不接受用户名和密码

时间:2017-02-11 09:30:33

标签: javascript node.js oauth-2.0 nodemailer google-oauth

我有一个使用nodemailer的表单,xoauth2和谷歌APi oauth2,我上周更新了密码,从那以后我的应用程序没有用,我得到了:

'535-5.7.8不接受用户名和密码。了解更多信息,请访问\ n535 5.7.8

我已尝试删除该应用并创建一个新应用,但它似乎没有获取新的更改密码。有关如何解决此问题的任何建议?我允许安全性较低的应用,并显示解锁验证码。

3 个答案:

答案 0 :(得分:22)

@sambellerose我来自

const generator = xoauth2.createXOAuth2Generator({
  user: serverConfig.gmail.client_user,
  clientId: serverConfig.gmail.client_id,
  clientSecret: serverConfig.gmail.secret,
  refreshToken: serverConfig.gmail.refresh_token,
  accessToken: serverConfig.gmail.access_token,
});


const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    xoauth2: generator,
  },
});

只是拥有以下内容:

const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    type: 'OAuth2',
    user: serverConfig.gmail.client_user,
    clientId: serverConfig.gmail.client_id,
    clientSecret: serverConfig.gmail.secret,
    refreshToken: serverConfig.gmail.refresh_token,
    accessToken: serverConfig.gmail.access_token,
  },
});

我希望这会有所帮助

答案 1 :(得分:4)

我通过更新到最新版本的Nodemailer解决了这个问题,并删除了xoauth2模块,因为Nodemailer 3具有更好的Oauth 2支持。继续使用Google Oauth 2.0游乐场,我可以获得正确的访问权限并刷新令牌。

答案 2 :(得分:0)

类似于以上答案。这就是我构造我的矿井的方法,它立即起作用。

const transporter = nodemailer.createTransport({
        host: "smtp.gmail.com",
        port: 465,
        secure: true, // true for 465, false for other ports
        auth: {
            type: "OAuth2",
            user: process.env.EMAIL, // email you are using with nodemailer
            pass: process.env.PASSWORD, // email password
            clientId: process.env.CLIENTID,
            clientSecrect:process.env.CLIENTSECRET,
            refreshToken: process.env.REFRESHTOK,
            accessToken: process.env.ACCESSTOK,
        },
        tls:{
           rejectUnauthorized:false 
        }
      });

此凭证链接也有效。 https://www.youtube.com/watch?v=JJ44WA_eV8E

您必须四处浏览,因为Google网络布局有些不同。当然可以!