Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不接受Google oauth 2.0 API密码更改用户名和密码_Javascript_Node.js_Oauth 2.0_Nodemailer_Google Oauth - Fatal编程技术网

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

Javascript 不接受Google oauth 2.0 API密码更改用户名和密码,javascript,node.js,oauth-2.0,nodemailer,google-oauth,Javascript,Node.js,Oauth 2.0,Nodemailer,Google Oauth,我有一个使用nodemailer、xoauth2和google APi oauth2的表单,我上周更新了密码,从那以后我的应用程序一直无法工作,我得到: '535-5.7.8不接受用户名和密码。有关详细信息,请访问\n535 5.7.8 我尝试过删除这个应用程序并创建一个新的应用程序,但它似乎没有接收到新更改的密码。对如何解决这个问题有什么建议吗?我允许不太安全的应用程序,并显示解锁验证码。我通过更新到最新版本的NodeEmailer解决了这个问题,并删除了xoauth2模块,因为NodeEma

我有一个使用nodemailer、xoauth2和google APi oauth2的表单,我上周更新了密码,从那以后我的应用程序一直无法工作,我得到:

'535-5.7.8不接受用户名和密码。有关详细信息,请访问\n535 5.7.8


我尝试过删除这个应用程序并创建一个新的应用程序,但它似乎没有接收到新更改的密码。对如何解决这个问题有什么建议吗?我允许不太安全的应用程序,并显示解锁验证码。

我通过更新到最新版本的NodeEmailer解决了这个问题,并删除了xoauth2模块,因为NodeEmailer 3具有更好的Oauth 2支持。在GoogleOAuth2.0平台上,我能够获得正确的访问和刷新令牌

@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,
  },
});

我希望这与上面的答案类似。这就是我构建我的系统的方式,它马上就开始工作了

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 
        }
      });
这个凭证链接也起了作用


你必须四处浏览,因为谷歌的网页布局有点不同。当然可以了

您可以使用nodeEmailer oauth2显示任何代码吗?我和你有同样的错误。谢谢如果你不必在代码刷新时用access代码不断地更改代码就好了。@KeplerIO我将我的代码存储在json文件中,并在更新时进行更新changes@GraemePaul我想这是可行的,但从我记得看到的情况来看,它每1500秒左右就会刷新一次。要不断地改变是非常乏味的。我发现使用标准的smtp Gmail API是一件更轻松的事,这让我非常高兴!你可以接受你自己的答案,就像一种魅力。