“我的联系人”群组谷歌联系人

时间:2011-09-26 14:10:19

标签: python google-contacts

我刚刚编写了一个小的python脚本,它将我的谷歌联系人列表中的所有群组都收到了,但出于某种原因"我的联系人"没有出现在那里。我使用的是3.0 api,也遇到了与2.0 api类似的问题。以下是Google 2.0 Contacts documentation

以外的其他内容
  

例如,要确定“我的联系人”组ID,您可以检索给定用户的所有组的订阅源,然后找到包含该子元素的组条目,并获取该组条目的值& #39; s元素。

目前我得到的响应在任何地方都没有gContact:systemGroup标记。我应该如何处理才能获得特定群组的群组ID?

我的脚本如下所示: -

user="blah@gmail.com"
pas="blah"
data={"Email":user, "Passwd":pas, "service": "cp", "source":"tester"}
import urllib
data = urllib.urlencode(data)

import urllib2
req = urllib2.Request('https://www.google.com/accounts/ClientLogin', data)
resp = urllib2.urlopen(req)
x = resp.read()

auth=a[-1].split('=')[-1]
req = urllib2.Request('https://www.google.com/m8/feeds/groups/blah@gmail.com/full/', headers={'Authorization':'GoogleLogin auth='+auth})
resp = urllib2.urlopen(req)
x = resp.read()
print x
print "My Contacts" in x
print "gContact:systemGroup" in x

有关我如何排除故障的一些线索非常棒,谢谢。

1 个答案:

答案 0 :(得分:2)

为什么不直接使用Python Client Library?它包含一组完全你想要的方法。

import gdata.contacts.client
import gdata.contacts.data # you might also need atom.data, gdata.data

gd_client = gdata.contacts.data.ContactsClient(source='eQuiNoX_Contacts')
gd_client.ClientLogin('equinox@gmail.com', '**password**')

feed = gd_client.GetGroups()
    for entry in feed.entry:
        print 'Atom Id: %s' % group.id.text
        print 'Group Name: %s' % group.title.text
        if not entry.system_group:
            print 'Edit Link: %s' % entry.GetEditLink().href
            print 'ETag: %s' % entry.etag
        else:
            print 'System Group Id: %s' % entry.system_group.id

这可以解决您的问题吗?在某种程度上它更清洁。如果您仍遇到问题:

  

......出于某种原因“我的联系人”没有出现......

然后从文档:

  

注意:Feed可能不包含所有用户的联系人组,因为返回的结果数量有默认限制。有关详细信息,请参阅Retrieving contact groups using query parameters中的max-results查询参数。

注意:newer documentation包含示例Python代码并与协议说明并排; Python代码帮助我绕过通用协议。