dqphg40600 2011-05-26 07:38
浏览 113
已采纳

使用Zend_GData和Google Contacts API将联系人添加到群组

I have an application using zend_gdata and create contact with the code below.

$doc  = new DOMDocument();
$doc->formatOutput = true;
$entry = $doc->createElement('atom:entry');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' ,'xmlns:atom', 'http://www.w3.org/2005/Atom');
$entry->setAttributeNS('http://www.w3.org/2000/xmlns/' , 'xmlns:gd', 'http://schemas.google.com/g/2005');
$doc->appendChild($entry);

// add name element
$name = $doc->createElement('gd:name');
$entry->appendChild($name);

$fullName = $doc->createElement('gd:fullName', htmlentities($data->firstname . ' ' . $data->lastname));
$name->appendChild($fullName);

// insert entry
$entryResult = $gdata->insertEntry($doc->saveXML(), 'http://www.google.com/m8/feeds/contacts/default/full');

Is there a possibility, a function to add a group to the contact just created?

  • 写回答

2条回答 默认 最新

  • douzhao4071 2011-10-11 12:47
    关注

    I have a big class and can't paste it all, you need to put this together somehow

    step 1)

    get all groups ( http://raiyaraj.wordpress.com/2008/09/17/gmail-gdata-contacts-group-via-proxy/) and find the id of your group or create it ( you can do it with zend framework) if it doesn't exist

    step 2)

    generate the xml

    // create new entry
            $doc  = new DOMDocument();
            $doc->formatOutput = true;
            $entry = $doc->createElement('atom:entry');
            $entry->setAttributeNS('http://www.w3.org/2000/xmlns/' , 'xmlns:atom', 'http://www.w3.org/2005/Atom');
            $entry->setAttributeNS('http://www.w3.org/2000/xmlns/' , 'xmlns:gd', 'http://schemas.google.com/g/2005');
            $entry->setAttributeNS('http://www.w3.org/2000/xmlns/' , 'xmlns:gContact', 'http://schemas.google.com/contact/2008');
            $doc->appendChild($entry);
    
    ...add various stuff....
        $name = $doc->createElement('gd:name');
                $entry->appendChild($name);
                $fullName = $doc->createElement('gd:fullName', $this->name);
                $name->appendChild($fullName);
    .....
    
            $group = $doc->createElement('gContact:groupMembershipInfo');
            $group->setAttribute('deleted' ,'false');
            $group->setAttribute('href' ,'http://www.google.com/m8/feeds/groups/' .urlencode($this->email) . '/base/'.$this->group_id);
            $entry->appendChild($group);
    

    step 3)

    connect to gmail and execute the query

    $service = $this->service;
    // perform login and set protocol version to 3.0
    $client = $service;
    $gdata = new Zend_Gdata($client);
    $gdata->setMajorProtocolVersion(3);
    $entryResult = $gdata->insertEntry($this->getXML(), 'https://www.google.com/m8/feeds/contacts/default/full');
    
    return $entryResult->getLink('edit');
    

    notice that you return the edit link so that if you save it, you can update the contact or or check for modifications

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入