如何使用PHP在google contacts api v3中将联系人添加到组中

如何使用PHP在google contacts api v3中将联系人添加到组中,php,google-api,google-contacts-api,php-curl,Php,Google Api,Google Contacts Api,Php Curl,我尝试将联系人添加到组中。但是它用HTTP-CODE:400(错误请求)进行响应。出什么事了?以下是400错误请求错误的代码: /** config: */ $access_token = "YOUR_ACCESS_TOKEN"; //example: ya29.ImC7B2RO5vkjhsdfdOU0tcn3jI1uP7N5wkxEEEEJF01ZbD4d1LLLLLf5gC06Lh5LJ49FnqHglDjxh5SrdX3jFhOtDQoakSi4XWm5XYHCMhBSiYbFbKqxSv

我尝试将联系人添加到组中。但是它用HTTP-CODE:400(错误请求)进行响应。出什么事了?以下是400错误请求错误的代码:

/** config: */
$access_token = "YOUR_ACCESS_TOKEN"; //example: ya29.ImC7B2RO5vkjhsdfdOU0tcn3jI1uP7N5wkxEEEEJF01ZbD4d1LLLLLf5gC06Lh5LJ49FnqHglDjxh5SrdX3jFhOtDQoakSi4XWm5XYHCMhBSiYbFbKqxSvP6_6_rB5_UJLg
$etag = '"YOUR_ETAG."' //example: "SHc8fTVSLLt7I2AAXBFbGEsRTgE."
$contactGroup = "YOUR_CONTACTGROUP"; //example: 1b1bccc40d9e0fff
$contactID = "YOUR_CONTACTS_ID"; //example: 5085d7c29e37dd51

$contactXML = "<entry gd:etag='". $etag ."'>
                <id>http://www.google.com/m8/feeds/contacts/default/base/". $contactID ."</id>
                <gContact:groupMembershipInfo deleted='false'
                href='http://www.google.com/m8/feeds/groups/default/base/". $contactGroup ."'/>
            </entry>";
$headers = array(
'Host: www.google.com'
,'Gdata-version: 3.0'
,'Content-length: '.strlen($contactXML)
,'If-Match: '. $etag
,'Content-type: application/atom+xml'
,'Authorization: OAuth '.$access_token
,'X-HTTP-Method-Override: PUT'
);

$contactQuery = 'https://www.google.com/m8/feeds/contacts/default/full/'. $contactID;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $contactQuery );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $contactXML);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
$resultat = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo("Resultat=".print_r($resultat,1) ."<br>");
echo("HTTP-CODE: ". $httpcode);
/**配置:*/
$access\u token=“您的\u access\u token”//示例:ya29.IMC7B2RO5VKJHSDFDOU0TCN3JI1UP7N5WKXEEEJF01ZBD1LLLF5GC06LH5LJ49FNQHGLDJXH5SRDX3JFHOTTDQOAKSI4xWM5xYHCMHBSIYBBKQXSVP6
$etag=''YOUR_etag.'//示例:“SHc8fTVSLLt7I2AAXBFbGEsRTgE。”
$contactGroup=“您的联系人组”//示例:1B1BCC40D9E0FFF
$contactID=“您的联系人ID”//示例:5085d7c29e37dd51
$contactXML=”
http://www.google.com/m8/feeds/contacts/default/base/". $联系人ID。“
";
$headers=数组(
“主持人:www.google.com”
,“Gdata-version:3.0”
,“内容长度:”.strlen($contactXML)
,“如果匹配:”。$etag
,“内容类型:应用程序/atom+xml”
,“授权:OAuth”。$access\u令牌
,'X-HTTP-Method-Override:PUT'
);
$contactQuery=https://www.google.com/m8/feeds/contacts/default/full/'. $联系人ID;
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$contactQuery);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,“PUT”);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$contactXML);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,10);
curl_setopt($ch,CURLOPT_超时,10);
curl_setopt($ch,CURLOPT_FAILONERROR,true);
curl_setopt($ch,CURLOPT_头,1);
$resultat=curl\u exec($ch);
$httpcode=curl\u getinfo($ch,CURLINFO\u HTTP\u代码);
echo(“Resultat=“.print\r($Resultat,1)。”
”; echo(“HTTP-CODE:.$httpcode”);
在这里,您可以找到解决方案:

要创建联系人组,请执行以下操作:

/** Kontaktgruppe erstellen */
$contactXML = '<entry xmlns="http://www.w3.org/2005/Atom"
                       xmlns:gd="http://schemas.google.com/g/2005">
                    <category scheme="http://schemas.google.com/g/2005#kind"
                              term="http://schemas.google.com/g/2008#group"/>
                    <title>aBusiness</title>
                    <gd:extendedProperty name="more info">
                        <description>aBusiness Kontakte</description>
                    </gd:extendedProperty>
                </entry>';

$headers = array(
'Host: www.google.com'
,'Gdata-version: 3.0'
,'Content-length: '.strlen($contactXML)
,'Content-type: application/atom+xml'
,'Authorization: OAuth '.$access_token
);

$contactQuery = 'https://www.google.com/m8/feeds/groups/default/full';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $contactQuery );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $contactXML);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
$resultat = curl_exec($ch);
/** Kontaktgruppe "aBusiness schnappen" */
$groupId = "";
$headers = array(
'Host: www.google.com'
,'Gdata-version: 3.0'
,'Content-type: application/atom+xml'
,'Authorization: OAuth '.$access_token
);

$contactQuery = 'https://www.google.com/m8/feeds/groups/default/full';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $contactQuery );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
$resultat = curl_exec($ch);

$posTitle = strpos($resultat, "<description>aBusiness Kontakte</description>");
if($posTitle !== false) {
    /** Kontatkgruppe parsern */
    $iPosLast = 0;
    $iPos = strpos($resultat, "/base/");
    while($iPos !== false) {
        $iPosLast = $iPos;
        $iPos = strpos($resultat, "/base/", $iPos+1);
        if($iPos > $posTitle) {
            /** Eine Position zu weit. */
            $iPos = $iPosLast;
            break;
        }
    }
    /** Anfang zuschneiden */
    $strCut = substr($resultat, $iPosLast+6);
    $groupId = getPartOfString($strCut, "", "</id>");
}

请不要关闭SSL验证!
/** Die Account-ID holen */
$contactQuery = "https://www.googleapis.com/oauth2/v1/userinfo?alt=json&access_token=". urlencode($access_token);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $contactQuery );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
$result = curl_exec($ch);
$result = json_decode($result);
$accountid = $result->id;
if(!$accountid) die("Error");
$sql = "update abuoauth set
            accountid = ". dbsecurestring($accountid) ."
            ,`email` = ". dbsecurestring($result->email) ."
            where id = ". dbsecurenumber($abuoauthid) ."
        ";
mysql_query($sql);
/** Kontaktgruppe erstellen */
$contactXML = '<entry xmlns="http://www.w3.org/2005/Atom"
                       xmlns:gd="http://schemas.google.com/g/2005">
                    <category scheme="http://schemas.google.com/g/2005#kind"
                              term="http://schemas.google.com/g/2008#group"/>
                    <title>aBusiness</title>
                    <gd:extendedProperty name="more info">
                        <description>aBusiness Kontakte</description>
                    </gd:extendedProperty>
                </entry>';

$headers = array(
'Host: www.google.com'
,'Gdata-version: 3.0'
,'Content-length: '.strlen($contactXML)
,'Content-type: application/atom+xml'
,'Authorization: OAuth '.$access_token
);

$contactQuery = 'https://www.google.com/m8/feeds/groups/default/full';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $contactQuery );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $contactXML);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
$resultat = curl_exec($ch);
/** Kontaktgruppe "aBusiness schnappen" */
$groupId = "";
$headers = array(
'Host: www.google.com'
,'Gdata-version: 3.0'
,'Content-type: application/atom+xml'
,'Authorization: OAuth '.$access_token
);

$contactQuery = 'https://www.google.com/m8/feeds/groups/default/full';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $contactQuery );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
$resultat = curl_exec($ch);

$posTitle = strpos($resultat, "<description>aBusiness Kontakte</description>");
if($posTitle !== false) {
    /** Kontatkgruppe parsern */
    $iPosLast = 0;
    $iPos = strpos($resultat, "/base/");
    while($iPos !== false) {
        $iPosLast = $iPos;
        $iPos = strpos($resultat, "/base/", $iPos+1);
        if($iPos > $posTitle) {
            /** Eine Position zu weit. */
            $iPos = $iPosLast;
            break;
        }
    }
    /** Anfang zuschneiden */
    $strCut = substr($resultat, $iPosLast+6);
    $groupId = getPartOfString($strCut, "", "</id>");
}
$headers = array(
    'Host: www.google.com'
    ,'Gdata-version: 3.0'
    ,'Content-type: application/atom+xml'
    ,'Authorization: OAuth '.$access_token
    ,'If-Match: '. $row3['etag']
    ,'X-HTTP-Method-Override: DELETE'
);
if($row3['googleid']) {
    $contactQuery = 'https://www.google.com/m8/feeds/contacts/default/full/'. $row3['googleid'];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $contactQuery );
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_FAILONERROR, true);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    $resultat = curl_exec($ch);

    if(strpos($resultat, "200 OK") !== false) {
        mysql_query("delete from googlecontacts where id = ". dbsecurenumber($row3['id']));
        alert("Google Kontakt mit Kunde-ID ". $row3['kundeid'] ." gelöscht.");
    }
}