2015-05-21 28 views
0

我正在使用此腳本從GMAIL中刪除聯繫人,有時它可以工作,但它不會刪除每個聯繫人的示例,即時消息試圖刪除「ADRIANA CALI」此聯繫人位於一個名爲「 「modelos」,但它不會刪除這個名字...有什麼想法嗎?使用PHP刪除單個Gmail聯繫人

<?php 

// load Zend Gdata libraries 
//require 'init_autoloader.php'; 
require_once 'Zend/Loader.php'; 
Zend_Loader::loadClass('Zend_Gdata'); 
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
Zend_Loader::loadClass('Zend_Http_Client'); 
Zend_Loader::loadClass('Zend_Gdata_Query'); 
Zend_Loader::loadClass('Zend_Gdata_Feed'); 

// set credentials for ClientLogin authentication 
$user = "[email protected]"; 
$pass = "samplepassword"; 
//contact name to delete 
$contact_name = 'ADRIANA CALI'; 


try { 
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cl'); 
} catch (Zend_Gdata_App_CaptchaRequiredException $cre) { 
    echo 'URL of CAPTCHA image: ' . $cre->getCaptchaUrl() . "\n"; 
    echo 'Token ID: ' . $cre->getCaptchaToken() . "\n"; 
} catch (Zend_Gdata_App_AuthException $ae) { 
    echo 'Problem authenticating: ' . $ae->exception() . "\n"; 
} 
try {  
    // perform login and set protocol version to 3.0 
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cp'); 
    $gdata = new Zend_Gdata($client); 
    $gdata->setMajorProtocolVersion(3); 

    $query = new Zend_Gdata_Query('https://www.google.com/m8/feeds/contacts/default/full'); 
    $feed = $gdata->getFeed($query); 

$contacts=array();; 

foreach($feed as $entry){ 
    $name = (string) $entry->title; 
    if(strcasecmp($name,$contact_name)==0) { 
     //echo '<xmp>';print_r($entry);echo '</xmp>'; 
     $id = substr((string) $entry->id,(strpos((string) $entry->id,'base')+5)); 
     $contacts[] = array('id'=>$id,'name'=>$name); 
     echo $entry->id; 
    } 
    //$xml = simplexml_load_string($entry->getXML()); 

    //$obj = new stdClass;echo $entry->title."<br/>"; 
    //$obj->name = (string) $entry->title; 
    //$editLink = $entry->getEditLink()->href; 
    //echo $editLink.'-66<br>'; 
    //$extra_header = array('If-Match'=>'*'); 
    //$entry->delete(); 
} 

    ?> 
    <h2>Deleting One Contact</h2> 
    <div><?php echo count($contacts); ?> contact(s) found for deletion under Contact "<?php echo $contact_name; ?>".</div> 

    <?php 


    foreach($contacts as $contact){ 
     $deleteLink = 'https://www.google.com/m8/feeds/contacts/default/full/'.$contact['id']; 

    //$deleteLink = ' http://www.google.com/m8/feeds/contacts/userEmail/base/contactID'; 

    //echo $deleteLink.'<br>'; 
    //$deleteLink = $contact['id']; 
    //$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cp'); 
    $client->setHeaders(array('If-Match'=>'*','If-None-Match'=>'anything')); 
    $gdata = new Zend_Gdata($client); 
    $gdata->setMajorProtocolVersion(3);  
    // delete entry 
    $gdata->delete($deleteLink); 


    } 
} catch (Exception $e) { 
    die('ERROR 71:' . $e->getMessage()); 
} 
?> 

<?php 
// display results 
foreach ($contacts as $contact) {  
?> 
<div class="entry"> 
    <div class="name"><?php echo (!empty($contact['name'])) ? $contact['name'] : 'Name not available' . ' deleted!'; ?></div> 
</div> 
<?php 
} 
?> 

+0

檢查此鏈接HTTP ://www.ibm.com/developerworks/library/x-phpgooglecontact/和此鏈接http://zend-framework-community.634137.n4.nabble.com/gdata-google-contacts-q題目了-着更新接觸-td3539863.html#。我認爲你不應該在刪除條目時調用設置標題。 – SGC

回答

0

這是因爲最大的接觸達到和查詢沒有進一步處理,現在我已經設置了最高限額爲1000

<?php 

// load Zend Gdata libraries 
//require 'init_autoloader.php'; 
require_once 'Zend/Loader.php'; 
Zend_Loader::loadClass('Zend_Gdata'); 
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
Zend_Loader::loadClass('Zend_Http_Client'); 
Zend_Loader::loadClass('Zend_Gdata_Query'); 
Zend_Loader::loadClass('Zend_Gdata_Feed'); 

// set credentials for ClientLogin authentication 
$user = "[email protected]"; 
$pass = "sample password"; 
//contact name to delete 
$contact_name = 'ADRIANA CALI'; 


try { 
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cl'); 
} catch (Zend_Gdata_App_CaptchaRequiredException $cre) { 
    echo 'URL of CAPTCHA image: ' . $cre->getCaptchaUrl() . "\n"; 
    echo 'Token ID: ' . $cre->getCaptchaToken() . "\n"; 
} catch (Zend_Gdata_App_AuthException $ae) { 
    echo 'Problem authenticating: ' . $ae->exception() . "\n"; 
} 
try {  
    // perform login and set protocol version to 3.0 
    $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cp'); 
    $gdata = new Zend_Gdata($client); 
    $gdata->setMajorProtocolVersion(3); 

    $query = new Zend_Gdata_Query('https://www.google.com/m8/feeds/contacts/default/full?max-results=1000'); 
    $feed = $gdata->getFeed($query); 

$contacts=array();; 

foreach($feed as $entry){ 
    $name = (string) $entry->title; 
    if(strcasecmp($name,$contact_name)==0) { 
     //echo '<xmp>';print_r($entry);echo '</xmp>'; 
     $id = substr((string) $entry->id,(strpos((string) $entry->id,'base')+5)); 
     $contacts[] = array('id'=>$id,'name'=>$name); 
     //echo '<br>m-'.$name.'-'.$entry->id; 
    } 
    //$xml = simplexml_load_string($entry->getXML()); 

    //$obj = new stdClass;echo $entry->title."<br/>"; 
    //$obj->name = (string) $entry->title; 
    //$editLink = $entry->getEditLink()->href; 
    //echo $editLink.'-66<br>'; 
    //$extra_header = array('If-Match'=>'*'); 
    //$entry->delete(); 
} 

    ?> 
    <h2>Deleting One Contact</h2> 
    <div><?php echo count($contacts); ?> contact(s) found for deletion under Contact "<?php echo $contact_name; ?>".</div> 

    <?php 


    foreach($contacts as $contact){ 
     $deleteLink = 'https://www.google.com/m8/feeds/contacts/default/full/'.$contact['id']; 

    //$deleteLink = ' http://www.google.com/m8/feeds/contacts/userEmail/base/contactID'; 

    //echo $deleteLink.'<br>'; 
    //$deleteLink = $contact['id']; 
    //$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cp'); 
    $client->setHeaders(array('If-Match'=>'*','If-None-Match'=>'anything')); 
    $gdata = new Zend_Gdata($client); 
    $gdata->setMajorProtocolVersion(3);  
    // delete entry 
    $gdata->delete($deleteLink); 


    } 
} catch (Exception $e) { 
    die('ERROR 71:' . $e->getMessage()); 
} 
?> 

<?php 
// display results 
foreach ($contacts as $contact) {  
?> 
<div class="entry"> 
    <div class="name"><?php echo (!empty($contact['name'])) ? $contact['name'] : 'Name not available' . ' deleted!'; ?></div> 
</div> 
<?php 
} 
?>