NodeJS Google Api 客户端:我怎么知道访问令牌已过期?

use*_*518 4 google-api node.js google-api-nodejs-client

我正在研究 Nodejs Google Api 客户端 Oauth 进程。我遵循 oauth 的代码示例,https://github.com/google/google-api-nodejs-client/blob/master/examples/oauth2.js

我有一个问题。如何检查访问令牌是否已过期以及如何使用刷新令牌再次获取另一个访问令牌?

更具体地说,假设可以访问 google+ 用户个人资料,因此我使用访问令牌来获取用户个人资料:

getAccessToken(oauth2Client, function() {
    // retrieve user profile
    getUserProfile(client, oauth2Client, 'me', function(err, profile) {
      if (err) {
        console.log('An error occured', err);
        return;
      }
      console.log(profile.displayName, ':', profile.tagline);
    });
  });
Run Code Online (Sandbox Code Playgroud)

此外,在应用程序的客户端(backbonejs),如果我尝试使用 google api JS 客户端访问 google drive api(不是 google plus),我不确定是否可以使用我从中获得的访问令牌应用程序的服务器端(nodejs),或者我必须使用 google api JS 客户端执行另一个 OAuth。

Pri*_*ner 6

确定访问令牌是否已过期的最佳做法是尝试使用它。尽管返回的包包含 *expires_in* 参数,指示访问令牌到期前的秒数,但这并不可靠,因为它可能随时因其他原因被撤销和替换。

然后程序通常是

  1. 尝试使用访问令牌进行调用
  2. 如果您收到“未经授权”的响应,请使用引用令牌获取新的访问令牌。如果失败,您的许可已被撤销
  3. 尝试再次使用新的访问令牌进行调用

如果您使用该库进行其他 Google API 调用 - 这将自动为您处理。