Google API 的访问令牌是否永不过期?
Is Google API's access token never expiring?
我不知道我的代码是否有问题,但是;将 google-apis nodejs 客户端用于 Drive REST API.
但是,当我使用提供的刷新令牌刷新我的访问令牌时,它会给我一个以秒为单位的到期时间。 (从请求开始还有 3600 秒)
我将它们存储在一个文本文件中。然后我在新请求之前设置凭据。
oauth2Client.setCredentials({
access_token: gTokens[0],
refresh_token: gTokens[1],
expiry_date: gTokens[2]
});
var expiryDate = oauth2Client.credentials.expiry_date;
var isTokenExpired = expiryDate ? expiryDate <= (new Date()).getTime() : false;
然后我检查访问令牌是否过期。上面的代码为 isTokenExpired 提供了 true。即使我的访问令牌已过期,我也可以使用很久以前过期的访问令牌将文件上传到 Google 驱动器。
有什么问题?
没问题 - 您还保存了 refresh_token
,这听起来像,并且客户端库具有使用 refresh_token
获取新 access_token
的逻辑,如果您使用的第一个失败。
但是,它不会自动保存此令牌。如有必要,您需要采取措施设置挂钩以进行保存。
我不知道我的代码是否有问题,但是;将 google-apis nodejs 客户端用于 Drive REST API.
但是,当我使用提供的刷新令牌刷新我的访问令牌时,它会给我一个以秒为单位的到期时间。 (从请求开始还有 3600 秒)
我将它们存储在一个文本文件中。然后我在新请求之前设置凭据。
oauth2Client.setCredentials({
access_token: gTokens[0],
refresh_token: gTokens[1],
expiry_date: gTokens[2]
});
var expiryDate = oauth2Client.credentials.expiry_date;
var isTokenExpired = expiryDate ? expiryDate <= (new Date()).getTime() : false;
然后我检查访问令牌是否过期。上面的代码为 isTokenExpired 提供了 true。即使我的访问令牌已过期,我也可以使用很久以前过期的访问令牌将文件上传到 Google 驱动器。
有什么问题?
没问题 - 您还保存了 refresh_token
,这听起来像,并且客户端库具有使用 refresh_token
获取新 access_token
的逻辑,如果您使用的第一个失败。
但是,它不会自动保存此令牌。如有必要,您需要采取措施设置挂钩以进行保存。