问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

通过OAuth2.0获取Google API访问令牌的完整指南

创作时间:
作者:
@小白创作中心

通过OAuth2.0获取Google API访问令牌的完整指南

引用
CSDN
1.
https://blog.csdn.net/life16663/article/details/137156024

本文将详细介绍如何通过OAuth2.0获取访问令牌(access token)来调用Google API。内容包括在Google Cloud上创建项目和账户、获取客户端ID和私钥、生成JWT令牌以及使用curl命令获取访问令牌的完整流程。

1. Google的API调用

(1) 前提条件

在开始之前,你需要在Google Cloud平台上创建一个云项目(project),并在项目下创建服务账户(Service Accounts)。

(2) 新建服务账户

(3) 获取客户端ID的私有秘密键

使用以下命令在命令行中将p12格式的密钥转换为jks格式:

keytool -importkeystore -srckeystore loyal-theater-418309-e95646f4fd15.p12 -destkeystore des.jks -srcstoretype pkcs12 -deststoretype JKS

通过以上步骤,你可以完成获取访问令牌的前提条件,获取到clientID和privatekey。

2. 添加生成token的角色

(1) 添加生成token的角色

(2) 指定需要调用的API

接下来,我们将通过生成JWT令牌来从Google服务器上获取访问令牌。

3. 获取访问令牌

JWT header

{"alg":"RS256","typ":"JWT"}

JWT payload

{
  "iss":"testgettoken@loyal-theater-418309.iam.gserviceaccount.com",
  "scope":"https://www.googleapis.com/auth/playintegrity",
  "aud":"https://accounts.google.com/o/oauth2/token",
  "exp":1328554385,
  "iat":1328550785
}

其中:

  • iss:在Google Developer Console中创建的服务账号即clientID,格式为xxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxx@loyal-theater-418309.iam.gserviceaccount.com
  • scope:将要使用的API所需指定的范围
  • aud:发行访问令牌的目标网址https://accounts.google.com/o/oauth2/token
  • exp:访问令牌有效期限,最大为一个小时(iat+3600秒)
  • iat:访问令牌的发行日(从1970年1月1日00:00:00到现在的UTC秒数)

将上述JWT header和payload通过jks文件中的私钥加密生成签名后,使用以下curl命令获取访问令牌:

curl -d grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer -d assertion={上面生成的JWT} https://accounts.google.com/o/oauth2/token

注意:通过服务器发出请求时,可能会出现JWT签名验证失败的情况。

通过上述步骤获得的访问令牌就可以用来调用所需的API了。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号