2011-02-16 135 views
1

我看到this教程引用了很多关于如何使用PHP检索Google联系人的教程。它说,你所要做的就是安装Zend,然后开始使用提供的代码示例。使用Zend检索Google联系人

我安装了Zend(我认为)。然后尝试下面的代码,从教程中,并用我的Gmail地址替换[email protected],并用我的Gmail密码替换guessme,并认为下面的代码会返回所有Gmail联系人。但它只是返回一个空白屏幕。

这是否意味着我没有正确安装Zend?

<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <title>Listing contacts</title> 
    <style> 
    body { 
     font-family: Verdana;  
    } 
    div.name { 
     color: red; 
     text-decoration: none; 
     font-weight: bolder; 
    } 
    div.entry { 
     display: inline; 
     float: left; 
     width: 400px; 
     height: 150px; 
     border: 2px solid; 
     margin: 10px; 
     padding: 5px; 
    } 
    td { 
     vertical-align: top; 
    } 
    </style>  
    </head> 
    <body> 

    <?php 
    // load Zend Gdata libraries 
    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 = "guessme"; 

    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); 

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

     // display title and result count 
     ?> 

     <h2><?php echo $feed->title; ?></h2> 
     <div> 
     <?php echo $feed->totalResults; ?> contact(s) found. 
     </div> 

     <?php 
     // parse feed and extract contact information 
     // into simpler objects 
     $results = array(); 
     foreach($feed as $entry){ 
     $xml = simplexml_load_string($entry->getXML()); 
     $obj = new stdClass; 
     $obj->name = (string) $entry->title; 
     $obj->orgName = (string) $xml->organization->orgName; 
     $obj->orgTitle = (string) $xml->organization->orgTitle; 

     foreach ($xml->email as $e) { 
      $obj->emailAddress[] = (string) $e['address']; 
     } 

     foreach ($xml->phoneNumber as $p) { 
      $obj->phoneNumber[] = (string) $p; 
     } 
     foreach ($xml->website as $w) { 
      $obj->website[] = (string) $w['href']; 
     } 

     $results[] = $obj; 
     } 
    } catch (Exception $e) { 
     die('ERROR:' . $e->getMessage()); 
    } 
    ?> 

    <?php 
    // display results 
    foreach ($results as $r) { 
    ?> 
    <div class="entry"> 
     <div class="name"><?php echo (!empty($r->name)) ? 
     $r->name : 'Name not available'; ?></div> 
     <div class="data"> 
     <table> 
      <tr> 
      <td>Organization</td> 
      <td><?php echo $r->orgName; ?></td> 
      </tr> 
      <tr> 
      <td>Email</td> 
      <td><?php echo @join(', ', $r->emailAddress); ?></td> 
      </tr> 
      <tr> 
      <td>Phone</td> 
      <td><?php echo @join(', ', $r->phoneNumber); ?></td> 
      </tr> 
      <tr> 
      <td>Web</td> 
      <td><?php echo @join(', ', $r->website); ?></td> 
      </tr> 
     </table> 
     </div> 
    </div> 
    <?php 
    } 
    ?> 

    </body> 
</html> 
+0

尝试在您的php.ini中启用您的错误报告,以至少使用E_ALL,并将您的display_errors更改为true。这会准确地告诉你为什么你的脚本失败。 否则,这些信息也可以在你的php错误日志中找到。 – 2011-02-16 19:44:23

回答

1

你有没有更新你的php.ini包含路径指向Zend库。假设你将库解压到C:\ ZendXXX \ library \ Zend。 include_path =“.; C:\ ZendXXX \ library”;这个文件将被加入到你的php.ini文件中。