Создавайте новые контакты через API контактов Google или API людей

Можно ли создавать контакты Google с помощью API контактов Google или API людей?

У меня проблемы с созданием новых контактов с помощью API Google.

Я искал несколько дней и нашел следующую информацию:

1 - Похоже, пакет API людей приходит на замену API контактов Google

https://gsuite-developers.googleblog.com/2017/07/google-people-api-now-supports-updates.html

2 - Многие люди не могут создавать новые контакты с Python 3+ с помощью пакетов gdata и atom.

3 - API людей отображается в соответствии с рекомендациями Gsuite

https://support.google.com/a/answer/6103110?hl=pt-BR

Я хотел бы знать, создает ли кто-нибудь новые контакты с помощью этих API Google.

Требуется ли электронная почта g Suite?

Как получить токен доступа?

Я выполнил всю настройку на облачной платформе Google (включить API и auth2), у меня есть файл json, секретный ключ и идентификатор клиента

редактировать:

Мне удается перечислить мои 50 контактов с помощью этого кода, мне нужно изменить блоки для создания новых контактов

from __future__ import print_function
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/contacts']

def main():
    """Shows basic usage of the People API.
    Prints the name of the first 10 connections.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('people', 'v1', credentials=creds)

    # Call the People API
    print('List 50 connection names')
    results = service.people().connections().list(
        resourceName='people/me',
        pageSize=50,
        personFields='names,emailAddresses').execute()
    connections = results.get('connections', [])

    for person in connections:
        names = person.get('names', [])
        if names:
            name = names[0].get('displayName')
            print(name)

if __name__ == '__main__':
    main()

person Leonardo Henriques    schedule 01.12.2019    source источник
comment
пожалуйста, отмените удаление вашего сообщения, у меня есть ответ, я понял ваш ответ   -  person ansev    schedule 20.01.2020


Ответы (1)


Поскольку у вас уже есть авторизация для вывода списка контактов, вы можете сделать что-то вроде этого, чтобы создать его:

newContact = { "names": [{ "givenName": "John", "familyName": "Doe" }] }
result = service.people().createContact(body=newContact).execute()

Полное определение того, что может быть в теле / ​​человеке, находится здесь .

person Michael    schedule 01.12.2019
comment
HttpError: ‹HttpError 403 при запросе people.googleapis.com/v1/people:createContact ? alt = json возвращен Запрос имеет недостаточные области аутентификации. › - person Leonardo Henriques; 02.12.2019
comment
можешь помочь мне? - person Leonardo Henriques; 02.12.2019
comment
Удалите файл токена и попробуйте еще раз - person Jescanellas; 02.12.2019
comment
Объем, который у вас есть в коде, который вы разместили здесь, позволяет создавать контакты. Предложите то, что сказал Джесканеллас, удалите файл token.pickle и повторите попытку. - person Michael; 02.12.2019
comment
400. Это ошибка. Ошибка: redirect_uri_mismatch URI перенаправления в запросе, localhost: 55487, не соответствует тем, которые разрешены для клиента OAuth. Чтобы обновить авторизованные URI перенаправления, посетите: console.developers.google.com/apis/credentials/oauthclient/ - person Leonardo Henriques; 02.12.2019
comment
localhost не зарегистрирован с вашим идентификатором клиента oauth. Как все получилось в первый раз? Перейдите в облачную консоль Google (используя ссылку, указанную в сообщении об ошибке), найдите свой идентификатор клиента и щелкните его, если он не загружается автоматически, и добавьте localhost в URI авторизованного перенаправления. - person Michael; 03.12.2019