JSON API响应错误地声称我的API密钥具有IP限制

时间:2019-05-01 12:02:15

标签: google-cloud-platform google-cloud-storage

我正在尝试使用API​​密钥通过curl上传文件。我创建的API密钥没有应用程序限制,但仅用于存储具有API限制:

enter image description here

但是,当我尝试上传带有curl的文件时,会收到如下响应:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "ipRefererBlocked",
    "message": "There is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your API key configuration if request from this IP or referer should be allowed.",
    "extendedHelp": "https://console.developers.google.com"
   }
  ],
  "code": 403,
  "message": "There is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your API key configuration if request from this IP or referer should be allowed."
 }
}

我确定我使用了正确的API密钥。我只有一个,如果我请求并等待一会儿,关键配置页面上的“总使用量(最近30天)”会增加一个。除非我以某种方式不正确地解释了该错误信息,否则错误消息只是不准确。我在“应用程序限制”下选择了“无”。我曾尝试过制作其他键,但没有任何运气。

这是我的curl命令

curl -X POST --data-binary @$file_name \
-H "Content-Type: application/tar" \
-H "Content-Encoding: gzip" \
"https://www.googleapis.com/upload/storage/v1/b/my_bucket_name/o?uploadType=media&name=$object_name&key=$gcp_api_key"

你知道什么地方可能出问题吗?

1 个答案:

答案 0 :(得分:1)

我不确定对此类API密钥有何需求,但根据documentation,它是行不通的,因为它是一个限制(尽管我没有尝试过)。 GCS documentation(“ REST API”选项卡)不包含任何API密钥(key = [API_KEY])。我尝试使用文档中的示例将其上传到GCS,并且该示例无需任何API密钥即可工作,您真正需要的是OAUTH2_TOKEN。您可以通过将其打印为“ gcloud auth application-default print-access-token”来获取令牌。

curl -X POST --data-binary test.jpeg \
     -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
     -H "Content-Type: image/jpeg" \
     "https://www.googleapis.com/upload/storage/v1/b/[your bucket name]/o?uploadType=media&name=test.jpeg"