我正在尝试了解如何为nodejs Google Drive API授权(特别是刷新令牌)。
这是来自https://github.com/google/google-api-nodejs-client的代码。
oauth2Client.credentials = {
access_token: 'ACCESS TOKEN HERE',
refresh_token: 'REFRESH TOKEN HERE'
};
client
.plus.people.get({ userId: 'me' })
.withAuthClient(oauth2Client)
.execute(callback);
一般问题: 刷新令牌实际上如何与访问令牌一起使用?
背景: 正如我所解释的那样,每个访问令牌的时间间隔都有限(约1小时)。因此,当用户FIRST连接到我的服务器(服务器提供用户身份验证机制)时,服务器将接收有限生命访问令牌和一次性刷新令牌。 1小时后,访问令牌已过期。
具体问题: 这里是关键问题。到期后,我的服务器仍然使用EXPIRED访问令牌和刷新令牌向Google Drive Api发送请求(服务器使用会话来存储这些值)。这仍然可以访问Google云端硬盘中的内容吗?我猜测的是nodejs lib + google驱动器api足够智能,可以检测到访问令牌已过期&识别刷新令牌& api盲目地用新的访问令牌替换过期的访问令牌(比如服务器不需要做任何事情;只需google drive api)。 api是否会使用新的访问代码响应服务器?
我需要解决这个问题,因为我需要有效地在Nodejs中组织我的代码。
谢谢!
答案 0 :(得分:1)
是
Node.js API客户端将检测访问令牌错误并自动刷新令牌。
您可以看到此in the source:
var hasAuthError = res.statusCode == 401 || res.statusCode == 403;
// if there is an auth error, refresh the token
// and make the request again
if (!opt_dontForceRefresh && hasAuthError && credentials.refresh_token) {
// refresh access token and re-request
that.refreshToken_(credentials.refresh_token, function(err, result) {
if (err) {
opt_callback && opt_callback(err, null, null);
} else {
var tokens = result;
tokens.refresh_token = credentials.refresh_token;
that.credentials = tokens;
that.request(opts, opt_callback, true);
}
});
}