我遇到了Google云端存储API问题。我正在使用curl,但我得到400这样的错误:
{“error”:{“errors”:[{“domain”:“global”,“reason”:“required”,“message”:“Required”}],“code”:400,“message” :“必需”}}
不幸的是,我找不到解决方案,因为在互联网上没有像“必需”的错误。
这是我的PHP代码:
$GOOGLE_API_KEY = "My-API-Key";
$url = "https://www.googleapis.com/upload/storage/v1/b/img.artphototravel.com/o?key=".$GOOGLE_API_KEY;
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_URL => $url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
"uploadType" => "media",
"name" => "test.jpg"
)
));
//Headers
$headers = array();
$headers[] = "Content-Type: image/jpeg";
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$resp = curl_exec($curl);
curl_close($curl);
任何人都可以帮助我找出解决方案吗?非常感谢你。
答案 0 :(得分:0)
uploadType
不是帖子字段,它是一个像key
这样的网址查询参数。此外,您不想使用CURLOPT_POSTFIELDS
。这意味着您要上传表单数据,而media
uploadType是您直接上传数据的上传类型,而不提供单独的元数据部分。
答案 1 :(得分:0)
添加@Brandon提到的内容,uploadType + name应该包含在URL中。此外,您应该使用Authorization:Bearer,Content-type作为标题。不是PHP专家,但在创建请求时,这些sample REST API可能会很有用。
curl -X POST --data-binary @[OBJECT] \
-H "Authorization: Bearer [OAUTH2_TOKEN]" \
-H "Content-Type: [OBJECT_CONTENT_TYPE]" \
"https://www.googleapis.com/upload/storage/v1/b/[BUCKET_NAME]/o?uploadType=media&name=[OBJECT_NAME]"
另外,您是否已查看过Cloud Storage PHP库。这是link。祝你好运