根据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令牌而不是身份。
你知道这里发生了什么吗?
答案 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之前尝试获取API令牌:
rm ~/.oauth2l
此外,API令牌需要一个oauth2l fetch cloud-platform
(如上所示),而JWT则需要一个受众群体scope
,它是一个URL:
aud
您可能还想确保没有竞争性配置,请查看是否设置了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