Функция удаления контакта в People API не работает: Метод: people.deleteContact - PullRequest
2 голосов
/ 13 июля 2020

Теперь я пытаюсь использовать python для кодирования одного проекта CMS для контактов, но у меня есть некоторые проблемы.

Я кодирую этот def, но он не работает с API Google People. https://developers.google.com/people/v1/contacts

Журналы

File "/Users/nguyenngoclinh/.conda/envs/1z_vietnam/lib/python3.7/site-packages/googleapiclient/http.py", line 907, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 404 when requesting https://people.googleapis.com/v1/%7B'people/c9194159806299427121'%7D:deleteContact?alt=json returned "Not Found">

функция удаления приведена ниже

def delete_contacts_with_resourceName(creds,http,number_of_contact):
    # Call the People API
    service = build('people', 'v1', credentials=creds)
    print('Ban dang xoa', number_of_contactcontact, 'contacts')

    results = service.people().connections().list(
        resourceName='people/me',
        pageSize=number_of_contactofcontact,
        personFields='names,emailAddresses,phoneNumbers,emailAddresses,addresses').execute()
    service = discovery.build('people', 'v1', http=http,
                              discoveryServiceUrl='https://people.googleapis.com/$discovery/rest')
    connections = results.get('connections', [])
    for person in connections:
        abcd = person.get('resourceName')
        service.people().deleteContact(resourceName={abcd}).execute()

Но приведенная ниже функция creat contact def также работает.

def creat_a_google_contact(http):
    # POST / v1 / people: createContact
    # HTTP / 1.1
    # Body: {"names": [{"givenName": "John", "familyName": "Doe"}]}
    # Host: people.googleapis.com
    service = discovery.build('people', 'v1', http=http,
                              discoveryServiceUrl='https://people.googleapis.com/$discovery/rest')
    service.people().createContact(body={
        "names": [
            {
                'givenName': "Nguyen Ngoc Linh",
                "familyName": "29N2359 BMW 325i"
            }
        ],
        "phoneNumbers": [
            {
                'value': "0979955664"
            }
        ],
        "emailAddresses": [
            {
                'value': "bk.nguyenlinh@gmail.com"
            }
        ],
        "addresses": [
            {
                "streetAddress": "So 1 ngo 85 Lang Ha",
                "extendedAddress": "Ba Dinh",
                "city": "Ha Noi",
                "region": "Ha Noi",
                "postalCode": "10000",
                "country": "Vietnam",
                "countryCode": "84"
            }
        ]
    }).execute()

def main, пожалуйста, помогите мне

def main():
    creds = get_credentials(FLOW)
    # print_list_google_contact_with_number_of_contacts(creds,1000)
    http=get_http(creds)
    #creat_a_google_contact(http)
    # print_result(creds)
    delete_contacts_with_resourceName(creds,http,1000)
    #print_resourceName(creds, 2000)

1 Ответ

1 голос
/ 14 июля 2020

Имя ресурса отформатировано неправильно:

Если вы попытаетесь удалить контакт через Try this API с этой страницы , вы заметите, что URL-адрес для доступа имеет следующую форму:

https://people.googleapis.com/v1/people/c7142462727258425368:deleteContact

Где people/c7142462727258425368 - это resourceName контакта. Другими словами, имя ресурса не заключено в одинарные кавычки (' ') или скобки ({ }). Поскольку имя ресурса, вероятно, не отформатировано в URL-адресе, API не распознает его, вызывая ошибку 404 .

Вот что не удалось в вашем запросе:

https://people.googleapis.com/v1/%7B'people/c9194159806299427121'%7D:deleteContact

Чтобы исправить это, просто удалите скобки вокруг abcd, когда вы указываете его как имя ресурса. Должно получиться так:

service.people().deleteContact(resourceName=abcd).execute()

Ссылка:

...