Получать только поля из профиля контактов, которые я заполнил - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь использовать Google People API для получения полной информации о моих контактах, при условии, что они сделали эту информацию общедоступной.У меня проблемы с получением значений для полей, которые я сам не заполнил.Например, я знаю, что мой начальник заполнил поля, такие как Образование, Профессия и т. Д. Но когда я пытаюсь просмотреть те, которые используют: `` `

people.get(resourceName=boss, personFields = "names, phoneNumbers, education, occupation")

, я получаю только те поля, которые у меня есть.заполнены (имена и номера телефонов).

Изначально я пытался получить всю эту информацию из connections.list, но сейчас пытаюсь получить явное получение, используя имена ресурсов, полученные из connections.list.Я также попробовал people.get() на себе ("people / me"), и он вылетел со следующей ошибкой:

raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://people.googleapis.com/v1/people/me?personFields=locales%2Cnames%2Cnicknames%2Cgenders%2CageRanges%2Cbirthdays%2Cevents%2Caddresses%2CemailAddresses%2CphoneNumbers%2CimClients%2Ctaglines%2Cbiographies%2Corganizations%2Coccupations%2Cinterests%2Cskills%2Crelations%2CrelationshipInterests%2Cmemberships&alt=json returned "The caller does not have permission to request "people/me". Request requires one of the following scopes: [profile].">

В проекте используется несколько API, вот области, которые я запрашиваю, когдаЯ разрешаю:

SCOPES = ['https://www.googleapis.com/auth/gmail.readonly','https://www.googleapis.com/auth/contacts','https://www.googleapis.com/auth/calendar.readonly']

Ниже приведен раздел кода, в котором я получаю имя ресурса из моих контактов (имя моего босса является ключом в словаре conns).

results = service.people().connections().list(resourceName='people/me',
        pageSize=500,sortOrder='FIRST_NAME_ASCENDING',
        personFields=','.join(queryFields)).execute()
    connections = results.get('connections', [])
    tempPeople = []
    for person in connections:
        names = person['names']
        if names:
            name = names[0]['displayName']
            if name in conns.keys():
                tempPeople.append(person)
    people = []
    boss = tempPeople[1]['resourceName']
    res = service.people().get(resourceName=boss,personFields=",".join(queryFields)).execute()
    print(res.keys())

Обратите внимание, что поля запроса - это список, включающий почти все возможные поля персоны, описанные в Google People API.Когда я печатаю res.keys(), я в настоящее время получаю только resourceName, etag, names, phoneNumbers и членство.Я ожидаю увидеть адреса образования, профессии и адреса электронной почты, чтобы назвать несколько.

Любое направление будет с благодарностью.Я сейчас вырываю волосы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...