return number of contacts updated in google contacts through api

与世无争的帅哥 提交于 2020-01-05 14:10:11

问题


We have written code in cakephp to enter contacts in Google contacts through api, Contacts have added in Google through Google xml request , but how can we get total number of contacts added or updated in Google contacts after code successfully executed

here is code:

public function addContact($token=null,$atContacts=null){
foreach ( $atContacts as $contact ) {
$xml = <<<'EOF'
    <atom:entry xmlns:atom='http://www.w3.org/2005/Atom'               
     xmlns:gd='http://schemas.google.com/g/2005'>
     <atom:category scheme='http://schemas.google.com/g/2005#kind'       
     term='http://schemas.google.com/contact/2008#contact'/>
       <title type="text">TITLE</title>
       <gd:name>
     <gd:givenName>First</gd:givenName>
     <gd:additionalName>ADDITIONALNAME</gd:additionalName>
  <gd:familyName>Last</gd:familyName>
 <gd:namePrefix>NAMEPREFIX</gd:namePrefix>
 <gd:nameSuffix>NAMESUFFIX</gd:nameSuffix>
  </gd:name>
 <gd:structuredPostalAddress rel='http://schemas.google.com/g/2005#work' primary='true'>
<gd:city>CITY</gd:city>
<gd:street>STREET</gd:street>
<gd:region>REGION</gd:region>
<gd:postcode>POSTCODE</gd:postcode>
<gd:country>COUNTRY</gd:country>
</gd:structuredPostalAddress>
  <gd:phoneNumber rel='http://schemas.google.com/g/2005#home' primary='true'>
 HOMEPHONENUMBER
 </gd:phoneNumber>\
<gd:phoneNumber rel='http://schemas.google.com/g/2005#mobile'>MOBILENO</gd:phoneNumber>
<gd:phoneNumber rel='http://schemas.google.com/g/2005#work'>WORKPHONENO</gd:phoneNumber>
<gd:email label="home" address="EMAILADDRESS" displayName="DISPLAYNAME" />
</atom:entry>
EOF;


        $xml = str_replace ( "TITLE", $contact->Title, $xml );
        $xml = str_replace ( "EMAILADDRESS", $contact->EMailAddress, $xml );
        $xml = str_replace ( "DISPLAYNAME", $contact->FirstName, $xml );
        $xml = str_replace ( "HOMEPHONENUMBER", $contact->AlternatePhone, 
                    $xml );
        $xml = str_replace ( "MOBILENO", $contact->MobilePhone, $xml );
        $xml = str_replace ( "WORKPHONENO", $contact->Phone, $xml );
        $xml = str_replace ( "CITY", $contact->City, $xml );
        $xml = str_replace ( "STREET", $contact->AddressLine, $xml );
        $xml = str_replace ( "POSTCODE", $contact->ZipCode, $xml );
        $xml = str_replace ( "REGION", $contact->State, $xml );
        $xml = str_replace ( "COUNTRY", $contact->Country, $xml );
$auth_header = array ('Content-Type: application/atom+xml; charset=utf-8;',
'Authorization: GoogleLogin auth=' . trim ( $token ),
                'Content-length:' . strlen ( $xml ) );
        $url = 'https://www.google.com/m8/feeds/contacts/default/full';
        $curl = curl_init ();
        curl_setopt ( $curl, CURLOPT_URL, $url );
        curl_setopt ( $curl, CURLOPT_POST, 5 );
        curl_setopt ( $curl, CURLOPT_POSTFIELDS, $xml );
        curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, TRUE );
        curl_setopt ( $curl, CURLOPT_SSL_VERIFYPEER, FALSE );
        curl_setopt ( $curl, CURLOPT_HTTPHEADER, $auth_header );
        $xmlresponse = curl_exec ( $curl );
                }
    return $xmlresponse;
}

回答1:


In your code it does not appear that you do any validation to check that the contact was added successfully and you don't catch any cURL errors either, so with your code as it currently stands just do ..

$number_of_contacts = count($atContact);

If taken a guess to the structure of your $atContact array.

That will give you number of contacts you are trying to add to Google. If you add some validation at some point and want to make that more accurate, then create a new variable...

public function addContact($token=null,$atContacts=null){
$number_of_contacts = 0;
foreach ( $atContacts as $contact ) {
   $xml = <<<'EOF'
   ...
   if(no_errors){
       $number_of_contacts++;
   }


来源:https://stackoverflow.com/questions/20760605/return-number-of-contacts-updated-in-google-contacts-through-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!