2011-09-26 3 views
1

Je viens d'écrire un petit script python qui me permet d'accéder à tous les groupes de ma liste de contacts google, mais pour une raison ou une autre, "Mes contacts" n'apparaît pas. J'utilise l'API 3.0 et j'avais des problèmes similaires avec l'API 2.0. Ce qui suit est un extrait du Google 2.0 Contacts documentation.Groupe "Mes contacts" google contacts

Pour déterminer My Contacts ID de groupe, par exemple, vous pouvez récupérer une alimentation de tous les groupes pour un utilisateur donné, puis trouver l'entrée du groupe qui a le sous-élément, et de prendre la valeur de l'élément de cette entrée du groupe .

Actuellement, la réponse que je reçois n'a pas de balise gContact: systemGroup n'importe où. Comment dois-je procéder pour obtenir l'identifiant de groupe d'un groupe particulier?

Mon script est comme indiqué ci-dessous: -

user="[email protected]" 
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/[email protected]/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 

Quelques indices sur la façon dont je pourrais résoudre ce serait génial, merci.

+0

Vous trouverez également que https://www.google.com/m8/feeds/groups/default/full est utile dans ce cas –

Répondre

2

Pourquoi ne pas utiliser le Python Client Library directement? Il comprend un ensemble de méthodes qui font exactement ce que vous voulez.

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('[email protected]', '**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 

Est-ce que cela résout votre problème? C'est plus propre, d'une certaine manière. Si vous rencontrez toujours des problèmes avec:

... pour une raison quelconque "Mes Contacts" ne se présente pas ...

puis de la documentation:

Remarque : Le flux ne peut pas contenir tous les groupes de contacts de l'utilisateur, car il existe une limite par défaut sur le nombre de résultats renvoyés. Pour plus d'informations, voir le paramètre de requête max-results dans Retrieving contact groups using query parameters.

Remarque: Le newer documentation inclut un exemple de code Python côte à côte avec l'explication de protocole; le code Python m'aide à comprendre le protocole générique.

Questions connexes