OAuth承载令牌被Google Cloud REST API拒绝

时间:2019-07-05 14:35:20

标签: google-cloud-platform

根据Google的文档,我正在生成我的oauth访问令牌,如下所示:

export TOKEN=$(~/go/bin/oauth2l fetch -jwt -json ~/.google/my-service-key.json cloud-platform)

然后我像这样向Google的REST API发出请求:

curl -v -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" -d (...) $URL

我从Google那里得到的回复是我显然没有提供OAuth令牌:

Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.

其他帖子建议使用gcloud auth application-default print-access-token代替OAuth令牌,但是我知道这是不正确的方法,因为Google的API回信说它想要服务帐户OAuth令牌而不是身份。

你知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:0)

有时候,您在旋转<header> <nav class="navbar navbar-expand-lg navbar-dark primary-color"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Features</a> </li> <li class="nav-item"> <a class="nav-link" href="#">Pricing</a> </li> <li class="nav-item"> <a class="nav-link disabled" href="#">Disabled</a> </li> </ul> </div> </nav> </header> 之前会缓存旧的(错误的)令牌。

删除缓存

尝试一下:

service_account.json

令牌与JWT

并在签署JWT之前尝试获取API令牌:

rm ~/.oauth2l

范围vs受众

此外,API令牌需要一个oauth2l fetch cloud-platform (如上所示),而JWT则需要一个受众群体scope,它是一个URL:

aud

ENV

您可能还想确保没有竞争性配置,请查看是否设置了oauth2l fetch --jwt https://www.googleapis.com/auth/cloud-platform

GOOGLE_APPLICATION_CREDENTIALS

或有可能代替echo $GOOGLE_APPLICATION_CREDENTIALS unset GOOGLE_APPLICATION_CREDENTIALS 使用它:

--json ./service_account.json

HTH