Ich habe ein Skript geschrieben, das es erlaubt, die Google-Kontakte nach einer Telefonnummer zu durchsuchen und den zugehörigen Namen zurückzugeben.
Das Skript benötigt die openssl-Extension, sowie das Zend Framework. Die Anforderungen sind also die selben wie in diesem Thread.
Das Skript kann z.B. verwendet werden, um die Anruferliste aus der Fritzbox mit Namen zu versehen.
<?
// hier die Google-Zugangsdaten eintragen
$googleUser = '';
$googlePass = '';
// die Standard-Ländervorwahl
$defaultCountry = '+49';
// die Standard-Ortsvorwahl ohne führende 0
$defaultArea = '40';
// diese Zeilen müssen oben im Skript stehen
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
$googleQueryList = Array();
loadFromGoogle();
// hier eine Beispiel-Abfrage
echo(googleResolveNumber('123456789', 'nicht gefunden'));
// es folgen die Funktionen, die irgendwo im Skript stehen können.
function googleResolveNumber($phoneNumber, $defaultString)
{
global $googleQueryList;
$phoneNumber = formatPhoneNumber($phoneNumber);
if(isset($googleQueryList[$phoneNumber]))
return($googleQueryList[$phoneNumber]);
else
return($defaultString);
}
function formatPhoneNumber($phoneNumber)
{
global $defaultCountry, $defaultArea;
if(substr($phoneNumber, 0, 2) == '00')
{
$phoneNumber = '+' . substr($phoneNumber, 2);
}
if(substr($phoneNumber, 0, 1) != '+')
{
if(substr($phoneNumber, 0, 1) != '0')
{
$phoneNumber = $defaultCountry . $defaultArea . $phoneNumber;
}
else
{
$phoneNumber = $defaultCountry . substr($phoneNumber, 1);
}
}
return($phoneNumber);
}
function loadFromGoogle()
{
global $googleUser, $googlePass, $googleQueryList;
try
{
$client = Zend_Gdata_ClientLogin::getHttpClient($googleUser, $googlePass, 'cp');
$gdata = new Zend_Gdata($client);
$gdata->setMajorProtocolVersion(3);
$query = new Zend_Gdata_Query('https://www.google.com/m8/feeds/contacts/default/full');
$query->maxResults = 2000; // retrieve ALL the contacts
$feed = $gdata->getFeed($query);
foreach($feed as $thisEntry)
{
$xml = simplexml_load_string($thisEntry->getXML());
$thisName = (string) $thisEntry->title;
if($thisName == '') $thisName = $xml->organization->orgName;
foreach($xml->phoneNumber as $phoneNumber)
{
$phoneNumber = formatPhoneNumber((string) $phoneNumber);
$googleQueryList[$phoneNumber] = utf8_decode($thisName);
}
}
}
catch(Exception $e)
{
echo "Connection error.";
die();
}
}
?>