“我的联系人”组谷歌联系人
我刚写了一个小的Python脚本,用来获取我谷歌联系人列表上的所有分组,但不知为什么,“我的联系人”这个分组没有显示出来。我使用的是3.0版本的API,之前在2.0版本的API上也遇到过类似的问题。以下是摘自谷歌2.0联系人文档的内容。
要确定“我的联系人”分组的ID,你可以先获取某个用户的所有分组,然后找到包含特定子元素的分组条目,再取出该条目的元素值。
目前我得到的响应中没有任何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 个回答
2
为什么不直接使用Python客户端库呢?它里面有一套方法,能做到你想要的事情。
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
这样能解决你的问题吗?在某种程度上,这样更简洁。如果你还是遇到问题,比如:
...不知道为什么“我的联系人”没有显示出来...
那么根据文档的说明:
注意:这个数据源可能不包含用户的所有联系人组,因为返回的结果数量是有限制的。想了解更多,可以查看使用查询参数获取联系人组中的max-results查询参数。
另外,更新的文档中有示例Python代码和协议说明并排展示;这些Python代码能帮助我更好地理解这个通用协议。