Google oauth 2.0 API 密码更改用户名和密码不被接受
Posted
技术标签:
【中文标题】Google oauth 2.0 API 密码更改用户名和密码不被接受【英文标题】:Google oauth 2.0 API password change Username and Password not accepted 【发布时间】:2017-06-29 16:23:45 【问题描述】:我有一个使用 nodemailer 的表单,xoauth2 和 google APi oauth2,我上周更新了密码,从那以后我的应用程序一直没有工作,我得到:
'535-5.7.8 用户名和密码不被接受。了解详情\n535 5.7.8
我已尝试删除该应用程序并创建一个新应用程序,但它似乎无法获取新更改的密码。有关如何解决此问题的任何建议?我允许安全性较低的应用,并显示解锁验证码。
【问题讨论】:
【参考方案1】:我通过更新到最新版本的 Nodemailer 解决了这个问题,并删除了 xoauth2 模块,因为 Nodemailer 3 具有更好的 Oauth 2 支持。在 Google Oauth 2.0 操场上,我能够获得正确的访问权限并刷新令牌。
【讨论】:
你能用 Nodemailer oauth2 显示任何代码吗?我有同样的错误有你。谢谢! 如果您不必在访问代码刷新时不断更改代码.. @KeplerIO 我将我的存储在一个 json 文件中,并在它更改时更新它 @GraemePaul 我想这行得通,但据我记得看到的,它每 1500 秒左右刷新一次。必须不断改变是非常乏味的。我发现使用标准的 smtp Gmail API 更轻松【参考方案2】:@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,
,
);
希望对你有帮助
【讨论】:
非常感谢!您可以接受自己的答案,就像魅力一样。【参考方案3】:类似于上面的答案。这就是我构建我的结构的方式,并且它立即起作用。
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 oauth 2.0 API 密码更改用户名和密码不被接受的主要内容,如果未能解决你的问题,请参考以下文章
通过 OAuth 2.0 自动使用 google-api-dotnet-client
OAuth 2.0 适用于 Google 表格,但不适用于 Google Calendar API
将 OAuth 2.0 和 Google 电子表格 API 与 Java 结合使用的示例是啥?