我正在尝试向 Google API 发出请求,以使用服务帐户和他的 JSON 密钥文件创建源存储库。由于该产品没有客户端库,因此我使用此文档 https://cloud.google.com/source-repositories/docs/reference/rest使用 Python 进行查询
我已经使用类似的代码成功调用了我的云功能,但是这次我在 401 错误时阻止了这些请求。我使用我的服务帐户的 JSON 设置了 GOOGLE_APPLICATION_CREDENTIALS,为服务帐户授予源存储库管理员的权限,但仍然返回 401。
这是我的代码
import urllib.request
import json
import urllib
import google.auth.transport.requests
import google.oauth2.id_token
body = { "name" : "projects/$my_project_name/repos/$name_repo"}
jsondata = json.dumps(body).encode("utf8")
req = urllib.request.Request('https://sourcerepo.googleapis.com/v1/projects/$my_project_name/repos')
req.add_header('Content-Type', 'application/json; charset=utf-8')
auth_req = google.auth.transport.requests.Request()
id_token = google.oauth2.id_token.fetch_id_token(auth_req, 'https://www.googleapis.com/auth/cloud-platform')
req.add_header("Authorization", f"Bearer {id_token}")
response = urllib.request.urlopen(req, jsondata)
print (response.read().decode())
我也尝试在这样的 url 末尾使用 API-KEY
req = urllib.request.Request('https://sourcerepo.googleapis.com/v1/projects/$my_project_name/repos?key=$my-api-key')
谢谢