Получить все (другие) контакты из API контактов Google с помощью gdata-python-client и OAuth2 token? - PullRequest
0 голосов
/ 30 января 2019

В списке поиска всех (включая Other) контактов для пользователя Gmail / GSuite.Текущий People API не поддерживает эту функцию, отмечая следующие темы:

При более глубоком погружении кажется, что Контакты API все ещефункционирует и может использоваться через gdata https://developers.google.com/contacts/v3/

Однако, исходя из следующего репо (https://github.com/google/gdata-python-client),, имеется ограниченная документация по реализации с использованием OAuth2 (userID, token, refreshToken), который является текущим камнем преткновения для получения списка Other Contacts

Любая помощь будет принята с благодарностью, спасибо!

1 Ответ

0 голосов
/ 01 февраля 2019

Я нашел эту запись https://gist.github.com/jorilallo/3686737 от 7 лет назад (?).Ниже приведен пример кода, который мне пришлось немного изменить, чтобы он заработал:

import gdata
import gdata.gauth
import gdata.contacts.client
import json
import requests

GOOGLE_CLIENT_ID = 'GOOGLE_CLIENT_ID'  # Provided in the APIs console
GOOGLE_CLIENT_SECRET = 'GOOGLE_CLIENT_SECRET'  # Provided in the APIs console
ACCESS_TOKEN = 'ACCESS_TOKEN' # given from a prior OAuth2 workflow, along with userID and refreshToken
REFRESH_TOKEN = 'REFRESH_TOKEN'

# GData with access token
token = gdata.gauth.OAuth2Token(
    client_id=GOOGLE_CLIENT_ID,
    client_secret=GOOGLE_CLIENT_SECRET,
    scope='https://www.google.com/m8/feeds',
    user_agent='app.testing',
    access_token=ACCESS_TOKEN,
    refresh_token=REFRESH_TOKEN)

contact_client = gdata.contacts.client.ContactsClient()
token.authorize(contact_client)

feed = contact_client.GetContacts()

for entry in feed.entry:
  entry.title.text
  for e in entry.email:
    e.address

# JSON with access token
r = requests.get('https://www.google.com/m8/feeds/contacts/default/full?access_token=%s&alt=json&max-results=50&start-index=0' % (access_token))
data = json.loads(r.text)
print data
...