Google Calendar ACL rule with PHP

Go To StackoverFlow.com

0

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);
2012-04-04 07:59
by Simhachalam Gulla


1

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.

2012-04-12 03:16
by Jinzhao Huo
Ads