php curl 获取 邮箱通讯录 gmail
2012-3-24 经测试可正常使用
<?php error_reporting(E_ALL); $username = "gmail@gmail.com"; $password = "password"; $gmail = new mail_gmail(); $result = $gmail->getAddressList($username, $password); $data = json_decode($result, true); $list = array(); foreach ($data['feed']['entry'] as $entry) { $list['username'] = $entry['title']['$t']; $list['email']= $entry['gd$email'][0]['address']; $lists[] = $list; } var_dump($lists); class mail_gmail { function getAddressList($username, $password) { $login_url = "https://www.google.com/accounts/ClientLogin"; $fields = array( 'Email' => $username, 'Passwd' => $password, 'service' => 'cp', // <== contact list service code 'source' => 'test-google-contact-grabber', 'accountType' => 'GOOGLE', ); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $login_url); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $fields); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); $returns = array(); foreach (explode("\n", $result) as $line) { $line = trim($line); if (!$line) continue; list($k, $v) = explode("=", $line, 2); $returns[$k] = $v; } curl_close($curl); // step 2: grab the contact list $feed_url = "http://www.google.com/m8/feeds/contacts/$username/full?alt=json&max-results=250"; $header = array( 'Authorization: GoogleLogin auth=' . $returns['Auth'], ); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $feed_url); curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); curl_close($curl); return $result; } } ?>
前望