使用PHP的Google日历ACL规则


Google Calendar ACL rule with PHP

为什么返回此输出"错误:请求的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)(如果需要)。

然后你就可以出发了,如果有帮助,请告诉我们。