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

时间:2014-04-02 00:14:23

标签: node.js google-api 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);
    });
  });

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

1 个答案:

答案 0 :(得分:4)

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

程序通常是

  1. 尝试使用访问令牌进行呼叫
  2. 如果您获得了未经授权的"响应,使用referesh令牌获取新的访问令牌。如果失败,您的许可已被撤销
  3. 尝试再次使用新的访问令牌进行呼叫
  4. 如果您正在使用该库进行其他Google API调用,则会自动为您处理。