为什么返回此输出"错误:请求的URL返回错误:400"而不是发送请求
$headers=array("Authorization:GoogleLogin auth=".$this->auth.","GData版本:2.0","传输编码:分块","内容类型:application/atom+xml");
$xmlstr = "<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007'
xmlns:gd='http://schemas.google.com/g/2005'
gd:etag='W/"DU4ERH47eCp7ImA9WxRVEkQ."'>
<category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/acl/2007#accessRule'/>
<gAcl:scope type='user' value='$email_id'></gAcl:scope>
<gAcl:role value='http://schemas.google.com/gCal/2005#read'></gAcl:role>
</entry>";
$url = "http://www.google.com/calendar/feeds/$cal_id/acl/full/user%3A".urlencode($email_id)."";
curl_setopt($this->curl, CURLOPT_URL, $url);
curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($this->curl, CURLOPT_POSTFIELDS, $xmlstr);
curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->curl, CURLOPT_AUTOREFERER, true);
curl_setopt($this->curl, CURLINFO_HEADER_OUT, false);
curl_setopt($this->curl, CURLOPT_VERBOSE, true);
curl_setopt($this->curl, CURLOPT_FAILONERROR, true);
curl_setopt($this->curl, CURLOPT_COOKIESESSION, true);
curl_setopt($this->curl, CURLOPT_HEADER, 0);
curl_setopt($this->curl, CURLOPT_UNRESTRICTED_AUTH, true);
$response = curl_exec($this->curl);
请注意,PHP API使用的是V1,当然是最旧的版本:(因此,我们用来更新ACL的xml与V2上的指南有点不同。
我使用的是:
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gAcl='http://schemas.google.com/acl/2007' >
<category scheme='http://schemas.google.com/g/2005#kind'
term='http://schemas.google.com/acl/2007#accessRule'/>
注意不要使用"gd:etag"元素。
其余的xml对您来说是一样的。另一个建议是将您的url更改为HTTPS,而不是HTTP并添加"xoauth_requestor_id="。urlencode($USER)(如果需要)。
然后你就可以出发了,如果有帮助,请告诉我们。