我在我的nodejs应用程序中使用谷歌oauth护照策略,我不知道存储和更新我的idToken的正确方法,所以我可以在对外部api进行api调用时将其用于身份验证目的。目前,我正在将令牌写入文本文件并从那里读取它。我觉得这是一个坏主意,只需要有关如何以更优雅的方式做到这一点的建议。
module.exports = function (passport) {
passport.use(new GoogleStrategy({
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
callbackURL: url },
async (accessToken, refreshToken, params, profile, done) => {
const idToken = params.id_token
fs.writeFile('token.txt', idToken, err => {
if (err) {
console.error(err)
return
}
//file written successfully
console.log("file written successfully")
})
}
正如另一位发帖者所指出的,如果您纯粹使用令牌进行登录,则可能根本不需要存储和更新 ID 令牌。
但是,如果您使用令牌访问 Google API,并且即使没有用户在场也需要访问,最常见的方法是:
对于 Google 来说,请务必传递
access_type=offline
参数来检索刷新令牌。另外,如果这是您之前授权的用户,您需要传递 prompt=consent
,否则 Google 将不会颁发刷新令牌。
实现上述所有内容的另一种方法是使用托管 OAuth 服务,例如我工作的Xkit。它处理存储、加密和刷新令牌,以及所有特定于提供商的细微差别。同样,仅在您使用令牌访问 API(而不是用于登录)的情况下才有用,但需要考虑另一个选项。
我有刷新令牌,但是当我尝试使用刷新令牌获取新的 id-token 时,Google 发送 400 消息的令牌刷新 api 令牌无效。有什么解决方法或者我错过了一些我无法理解的东西