令牌过期日期(Google OAuth2)和凭证之间有什么区别?
问题描述:
我想问一下谷歌的令牌对象返回期限和我们在凭证中设置的区别?令牌过期日期(Google OAuth2)和凭证之间有什么区别?
oauth2Client.getToken(code, function (err, tokens) {
// Now tokens contains an access_token and an optional refresh_token. Save them.
if (!err) {
oauth2Client.setCredentials(tokens);
}
});
// Retrieve tokens via token exchange explained above or set them:
oauth2Client.setCredentials({
access_token: 'ACCESS TOKEN HERE',
refresh_token: 'REFRESH TOKEN HERE'
// Optional, provide an expiry_date (milliseconds since the Unix Epoch)
// expiry_date: (new Date()).getTime() + (1000 * 60 * 60 * 24 * 7)
});
答
,我要解释这个无需使用节点。这是纯粹的Oauth。
当你请求谷歌访问凭据对象返回给你时,它是一个Json响应,看起来像这样。
{
"access_token" : "ya29.1.AADtN_VSBMC2Ga2lhxsTKjVQ_ROco8VbD6h01aj4PcKHLm6qvHbNtn-_BIzXMw",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "1/J-3zPA8XR1o_cXebV9sDKn_f5MTqaFhKFxH-3PUPiJ4"
}
Expires_in是直到访问令牌到期的时间量,以秒为单位。这是一个小时。
在您向节点的请求中发送过期日期不会以任何方式帮助您。谷歌已经决定访问令牌在其服务器上的有效期限,这是你不能改变的。
刷新标记只要不被用户删除,就会生效。
你错了,我在setCredentials中设置了过期日期10秒,10秒后令牌不起作用。 –
这可能是你的NodeJs库中的东西。您正在使用的通用oauth2Client不是专门为Google设计的。图书馆将不会过期。如果您使用访问令牌并在没有使用库的情况下使用它,它仍然可以工作。除非有人认为向我怀疑的图书馆添加撤销。 – DaImTo
是的,它在图书馆https://github.com/google/google-api-nodejs-client/issues/261如果你设置为低,它会过期。 – DaImTo