javascript - 有人可以 ELI5 如何使用 node.js 正确地进行离线 Google oauth2 吗?

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

在浏览器中,我正在做:

      let { code } = await this.auth2.grantOfflineAccess();

然后我将该代码保存在我的数据库中。

然后在服务器 (node.js) 上,我正在做:

const { tokens } = await oauth2Client.getToken(code)
oauth2Client.setCredentials(tokens)
let { data } = await googleCalendar.calendarList.list({
  auth: oauth2Client
})

第一次,tokens 有一个refresh_token。我也保存它。当我运行一次时,它工作正常。当我再次运行它时,它说 token 无效。不知何故,我必须使用 refresh_token 来获取新 token ,但我不知道如何操作。有人可以像我 5 岁一样解释一下吗?

谢谢

最佳答案

  • 您已经拥有刷新 token 。
  • 您想将 API 与由刷新 token 刷新的访问 token 一起使用。
  • 您想使用 googleapis 和 Node.js 来实现这一点。

如果我的理解是正确的,这个答案怎么样?我认为你的问题的原因是授权码只能使用一次。因此需要使用刷新 token 检索访问 token 。在此答案中,访问 token 由刷新 token 检索。

修改后的脚本:

const refreshToken = "###";  // Please set your refresh token.

if (!refreshToken) { // Please modify this if statement for your situation.
  const { tokens } = await oauth2Client.getToken(code);
  oauth2Client.setCredentials(tokens);
} else {
  oauth2Client.credentials = { refresh_token: refreshToken };
}
let { data } = await googleCalendar.calendarList.list({
  auth: oauth2Client
});

备注:

  • 此修改后的脚本假定声明了 oauth2ClientgoogleCalendar
  • 使用刷新 token 时,不需要授权码。

引用:

如果我误解了您的问题并且这不是您想要的结果,我深表歉意。

关于javascript - 有人可以 ELI5 如何使用 node.js 正确地进行离线 Google oauth2 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57809748/

相关文章:

javascript - Node.js - 静态文件服务器不工作

java - 从 Spring RESTful 资源服务器验证 OAuth 2.0 访问 token

javascript - 如何垂直制作angular2中ngx图表中的 "advanced pie chart"?

javascript - 使用BeautifulSoup获取 "View Element"代码而不是 "View Source"代码

api - 如何在 Node.js 中最好地创建 RESTful API

asp.net - Azure 移动服务身份验证客户端流 Hook

oauth-2.0 - 谁负责 OAuth 中的重定向

javascript - Flexslider <li> 高度等于移动浏览器上最高的 <li>

javascript - 使用 jQuery 将输入字段解析为格式化的 json

javascript - 比较对象数组中的日期和时间