2012-03-28 2 views
0

Я пытаюсь добавить контакт, в то же время, включая userDefinedField. Приведенный ниже код работает и добавляет контакт с правильной информацией, однако поле userDefined отсутствует. Если я целенаправленно пропущу один из атрибутов, когда я помещаю api, падает, говоря, что ему не хватает элемента, однако, если я исправляю орфографическую ошибку, он не включает поле UserDefined.API контактов Google игнорирует параметр userDefinedField

Возможно, мне не хватает чего-то крошечного, но я действительно не понимаю, почему его просто игнорируют. У кого-нибудь есть идеи?

require_once 'Zend/Loader.php'; 
Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); 
Zend_Loader::loadClass('Zend_Gdata_Gapps'); 
Zend_Loader::loadClass('Zend_Gdata_Query'); 

$email = "<email>"; 
$password = "<password>"; 
$contactName = $requestData['name']; 
$contactAddress = $requestData['email']; 

$client = Zend_Gdata_ClientLogin::getHttpClient($email, $password,"cp"); 
$gdata = new Zend_Gdata($client); 

$entry = $gdata->newEntry(); 
$extensionElements = $entry->getExtensionElements(); 

$extension = new Zend_Gdata_App_Extension_Element('email', null,'http://schemas.google.com/g/2005'); 
$attributes['address'] = array('name'=>'address', 'value' =>$contactAddress); 
$attributes['rel'] = array('name'=>'rel', 'namespaceUri'=>null,'value' => 'http://schemas.google.com/g/2005#work'); 
$attributes['primary'] = array('name'=>'primary', 'namespaceUri' =>null, 'value' => 'true'); 
$extension->setExtensionAttributes($attributes); 
$attributes = null; 

    // adds the new email extension element to the entry's exenstions elemensts array 
array_push($extensionElements, $extension); 

$extension = new Zend_Gdata_App_Extension_Element('userDefinedField', null, 'http://schemas.google.com/contact/2008'); 
$attributes['key'] = array('name'=>'key', 'value' =>'customGUID'); 
$attributes['value'] = array('name'=>'value', 'value' => $this->guid()); 
$extension->setExtensionAttributes($attributes); 
$attributes = null; 
array_push($extensionElements, $extension); 

$extension = new Zend_Gdata_App_Extension_Element('groupMembershipInfo', null, 'http://schemas.google.com/contact/2008'); 
$attributes['deleted'] = array('namespaceUri'=>null,'name'=>'deleted', 'value' => 'false'); 
if ("manufacturers" == strtolower($contactgroup)) { 
     $attributes['href'] = array('namespaceUri'=>null,'name'=>'href', 'value' =>  $MANUFACTURER_GROUP_URI); 
} elseif ("distributors" == strtolower($contactgroup)) { 
     $attributes['href'] = array('namespaceUri'=>null,'name'=>'href', 'value' => $DISTRIBUTOR_GROUP_URI); 
} elseif ("clients" == strtolower($contactgroup)) { 
     $attributes['href'] = array('namespaceUri'=>null,'name'=>'href', 'value' =>  $CLIENT_GROUP_URI); 
} 
$extension->setExtensionAttributes($attributes); 
array_push($extensionElements, $extension); 

$entry->setExtensionElements($extensionElements); 

$entry->title = $gdata->newTitle($contactName); 
$entry->setExtensionElements($extensionElements); 
$entryResult = $gdata->insertEntry($entry,"http://www.google.com/m8/feeds/contacts/$email/full"); 

Я уже получил большую помощь от следующих постов, но ничего не видел, чтобы решить проблему: http://www.google.com/support/forum/p/apps-apis/thread?tid=22ec941b7ac4ffc1&hl=en http://groups.google.com/group/google-contacts- api/browse_thread/thread/be92586871a56046/95ec69573ca0f490? pli = 1 http://www.ibm.com/developerworks/opensource/library/x-phpgooglecontact/index.html

ответ

1

Мне удалось это выяснить.

Я не указывал, какую версию API использовать, поэтому, как только я уточнил последнюю версию, используя приведенный ниже код, userDefinedField появился в контактах по мере необходимости.

$gdata->setMajorProtocolVersion(3); 
$gdata->setMinorProtocolVersion(null); 

Надеюсь, что это поможет другим людям с подобными вопросами.

Смежные вопросы