Создайте строку Etag с помощью скрипта приложений Google

avatar
user14097394
9 августа 2021 в 06:26
186
1
0

Я использую Google people API для обновления контакта.

Я сохраняю имя ресурса созданного контакта, и когда я обновляю контакт, я просто использую этот код

People.People.updateContact({"emailAddresses": [{
                "type": "work",
                "value": "example@gmail.com"
            }]}, "people/c6679930577989153852")

Но это выдает ошибку - GoogleJsonResponseException: вызов API people.people.updateContact завершился ошибкой: запрос должен установить person.etag или person.metadata.sources.etag для обновляемого источника.

Как мне создать etag, если я не сохраняю созданный etag во время создания контакта? Есть ли способ создать новый etag с помощью функции, чтобы принудительно обновить весь контакт?

если да, то как создать маску updatePersonFields?

Источник
iansedano
12 августа 2021 в 07:54
0

Как это сработало для вас?

Ответы (1)

avatar
iansedano
9 августа 2021 в 07:50
0

Как справиться с ошибкой API контактов etag.

Сервер возвращает ошибку 400 с причиной "failedPrecondition", если person.metadata.sources.etag отличается от etag контакта, что указывает на то, что контакт изменился с момента чтения его данных. Клиенты должны получить самого последнего человека и объединить свои обновления с последним человеком.

Источник

Таким образом, вы правы, думая, что вам нужен etag для выполнения операции, которую вы хотите.

Однако его создание — неправильный путь.

Сначала необходимо выполнить простой запрос get с любым personFields, чтобы получить текущее значение etag. Затем вы должны использовать это значение etag в обновлении.

Это необходимо для предотвращения перезаписи и дублирования возможно важной информации.

Ссылка