phpでGoogle Contacts APIを実行してアドレス帳の情報を取得する方法

最近新しい事に挑戦していてネタが豊富なので頻繁に記事が書けます。

今回はphpGoogle Contacts APIを実行してアドレス帳の情報を取得する方法です。
具体的に何が出来るのかというと、mixitwitter内で”メールアドレスを使用して友達を探す”を実装する事が出来ます。


環境

OS:CentOS5.4
PHP:5.2.1


ソースコード

下記に詳細が書かれているので下記のサイトがオススメです。
http://www.ibm.com/developerworks/jp/xml/library/x-phpgooglecontact/


上記に紹介されているソースコードを纏めると下記になります。

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

$user = "camelmasa@gmail.com";
$pass = "********";

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'cp');

$gdata = new Zend_Gdata($client);
$gdata->setMajorProtocolVersion(3);

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

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;
}
var_dump($results);

注意点はZendのライブラリ内でDOM操作が必要なので、DOM関数が使える環境が必要です。

コマンドは下記

yum install php-dom

まとめ

IBMのサイトは偉大だと思いました。
現在Zendライブラリ以外でこのような操作が出来るものが見当たらないので、どなたかに作ってもらいたいなと思いました。


[PR]Spreeの情報を集めています。

ECを持ちたい方、仕事でECを使いたい方向けのコミュニティサイトです。
このサイトでは世界で最も使用されているECの1つであるSpreeについての情報を提供しています。
http://spreecommerce.jp/