Получение ленты профилей из Служб Google - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь получить фид профилей из моего домена Служб Google, используя библиотеку gdata, предоставленную Google для Python. Это мой код

import atom
import gdata.auth
import gdata.contacts
import gdata.contacts.service

gd_client = gdata.contacts.service.ContactsService()
gd_client.email = 'name@domain.com'
gd_client.password = 'password'
gd_client.source = 'madeupgibberish'
gd_client.account_type = 'HOSTED'
gd_client.contact_list = 'domain.com'
gd_client.ProgrammaticLogin()

def PrintFeed(feed):
  for i, entry in enumerate(feed.entry):
    print '\n%s %s' % (i+1, entry.title.text)

max_results = raw_input(
    'Enter max return: ')
feed_uri = gd_client.GetProfilesFeed()
query = gdata.contacts.service.ContactsQuery(feed_uri)
print(feed_uri)
query.max_results = max_results
#query.orderby='title'
feed = gd_client.GetContactsFeed(query.ToUri())
# Use the print feed method defined above.
PrintFeed(feed)
print(feed_uri)
#print feed

f = open('c:\\python27\\junk.xml', 'w')
f.write(str(feed))
f.close()

Когда я запускаю это, он возвращает:

C:\Python27\Lib\gdata-2.0.16>python contactAPI.py
Enter max return: 300
Traceback (most recent call last):
  File "contactAPI.py", line 27, in <module>
    feed_uri = gd_client.GetProfilesFeed()
  File "build\bdist.win-amd64\egg\gdata\contacts\service.py", line 294, in GetProfilesFeed
  File "build\bdist.win-amd64\egg\gdata\service.py", line 1108, in Get
gdata.service.RequestError: {'status': 403, 'body': 'Version 1.0 is not supported.', 'reason': 'Forbidden'}

Я могу использовать GetContactsFeed и другие каналы, но не могу получить профили. Есть идеи, что здесь происходит или что мне нужно исправить? Спасибо заранее за вашу помощь.

1 Ответ

2 голосов
/ 21 января 2012

Служба gdata.contacts.service использует устаревшую версию API. Вместо этого вы должны использовать gdata.contacts. {Client, data}}
Вот пример получения профилей пользователей.

import atom
import gdata.auth
import gdata.contacts
import gdata.contacts.client
email = 'admin@domain.com'
password = 'password'
domain = 'domain.com'

gd_client = gdata.contacts.client.ContactsClient(domain=domain)
gd_client.ClientLogin(email, password, 'madeupgibberish')
def PrintFeed(feed):
  for i, entry in enumerate(feed.entry):
    print '\n%s %s' % (i+1, entry.title.text)

feed_link = atom.data.Link(gd_client.GetFeedUri(kind='profiles'))
while feed_link:
  profiles_feed = gd_client.GetProfilesFeed(uri=feed_link.href)
  PrintFeed(profiles_feed)
  feed_link = profiles_feed.GetNextLink()

Библиотека contact_sample.py и unshare_profiles.py работает с клиентом, файлами данных.

...