当前位置: 首页 > 知识库问答 >
问题:

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

习阳
2023-03-14

我正在研究Nodejs谷歌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 drive api(而不是google plus),我不确定我是否可以使用从应用程序的服务器端(nodejs)获得的访问令牌,或者我必须使用google api JS客户端执行另一个OAuth。

共有1个答案

邢昂然
2023-03-14

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

然后,通常的程序是

  1. 尝试使用访问令牌进行呼叫
  2. 如果得到“未经授权”的响应,请使用referesh令牌获取新的访问令牌。如果失败,您的权限已被吊销
  3. 再次尝试使用新的访问令牌进行呼叫

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

 类似资料:
  • 我正在写一个小小的短信网关,供几个项目使用, 我实现了laravel passport身份验证(客户端凭据授予令牌) 然后,我向api中间件组添加了: 逻辑工作正常,现在在我的控制器中,我需要让客户机与有效令牌关联。 routes.php 出于明显的安全原因,我无法将客户端id与消费者请求一起发送,例如,

  • 当我试图在访问令牌过期之前使用刷新令牌生成访问令牌时,系统会生成一个新令牌,并且一切正常。但是如果访问令牌过期,则请求返回。 中的方法不是使用我从以前的访问令牌中存储在字典中的标识生成访问令牌吗? 如果上一个更新令牌尚未过期,如何阻止客户端使用相同的刷新令牌请求新的访问令牌? oauthProvider.cs: RefreshTokenProvider.cs: 对不起,英语不好,希望你能理解!

  • 我已经在本地机器中配置了minikube,并打算在外部使用kubernetes。我在kubernetes中创建了一个服务帐户,使用它的秘密,我可以使用下面的命令获得访问令牌。 我正在以贝娄启动配置。 我能知道如何使用fabric8 java客户端获得上面描述的serviceAccountAccessToken吗?

  • 引用的员额: 为什么OAuth v2既有访问令牌又有刷新令牌? 刷新令牌有什么意义?

  • REST API如何保护自己免受不是由允许的OAuth访问令牌URL生成的访问令牌的攻击? 由允许的OAuth访问令牌URL生成的令牌 “授权:Bear MTqvlvbdm73SIsN2PEhsetOwEHW439N2” 黑客生成的令牌 “授权:熊CAqvlvbdm73SIsN2PEhsetowEHW439N2”

  • 我正在使用 spring-security-oauth2 来实现我的 OAuth2 授权服务器。spring-security-oauth2 即将消失,我知道我需要用 spring-authorization-server 替换它 问:是否可以为不同的客户端设置不同的令牌到期时间(此处客户端表示客户端 ID/客户端密钥对)? 如果是,您能否分享有关 的文档/示例代码? 如果不是,它是Spring-