Artikelformat

stay connected – google contacts

Wer ein Android Mobiltelefon nutzt, synchronisiert sicher sein Addressbuch mit Google Contacts. Diese Kontaktliste kann man natürlich auch mit den verschiedenen Google Service nutzen. Nun möchte man aber auch aus einer PHP Applikation diese Daten nutzen und das wird im Folgenden beispielhaft beschrieben.

Um an die Google Daten zu gelangen benötigt man natürlich einen Account und könnte die Authentifizierung und das Auslesen der Daten selbst realisieren. Um den Account kommt man natürlich nicht herum, aber Authentifizierung und Zugriff auf die Daten ist mit Hilfe des Zend Frameworks sehr schnell realisiert.

Zuerst lädt man die notwendigen Klassen. Da nicht der Autoloader genutzt wird, kann man so auch die notwendigen Klassen leichter aus dem Framework heraustrennen, wenn man bspw. auf den Speicherplatz achten will.

1
2
3
4
5
6
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');

Nun authentifizieren wir uns und setzen – wie in der API Beschreibung erwartet – die Protokoll Version auf 3.0. Anschließend lesen wir den Kontakte-Feed. Also eine XML-Datei, die die gewünschten Daten beinhaltet.

1
2
3
4
5
6
7
8
    $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);

getFeed liefert ein Objekt vom Typ Zend_GData_App_Feed zurück. Man kann über die enthaltenen Einträge mit foreach laufen, da das Iterator-Interface implementiert wird. Weiter kann man auf einen Teil der Daten direkt zugreifen und auf einen Teil indem man diese als XML exportiert. In diesem Zuge werden neue Objekte erstellt, die der Zielsetzung entsprechen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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;
    }

Anschließend kann man über das Resultset laufen und die gewonnen Daten ausgeben. Beispielsweise als Html-Seite oder als XML-Datei, die einer gewissen Struktur genügt oder einfach auf der Kommandozeile.

Telefone von Grandstream unterstützen bspw. einen Telefonbuch-Import in Form einer XML-Datei.

By continuing to use the site, you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or you click "Accept" below then you are consenting to this.

Close