Why it returns this output "Error : The requested URL returned error: 400" instead of sending request
$headers = array("Authorization: GoogleLogin auth= " . $this->auth . "",
"GData-Version: 2.0",
"Transfer-Encoding: chunked",
"Content-Type: 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);
Please be aware PHP API is using V1, of course, the oldest version :( so, the xml we use to update ACL is a little different from the guide on V2.
What I am using is :
<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'/>
and take care I don't use the "gd:etag" element.
The rest xml is the same to you. Also another suggestion is changing your url to HTTPS, instead of HTTP, and add 'xoauth_requestor_id=' . urlencode($USER) if needed.
Then you're ready to go, let us know if it helps.