我使用Google people API来更新联系人。
我保存已创建联系人的resourceName,当我更新联系人时,我只使用以下代码
People.People.updateContact({"emailAddresses": [{
"type": "work",
"value": "example@gmail.com"
}]}, "people/c6679930577989153852")
但是这会抛出错误- GoogleJsonResponseException: API调用people.people. updateconcontact失败,错误:请求必须设置person。要更新的数据源的Etag或person.metadata.sources.etag。
如果在创建联系人时不存储已创建的etag,如何创建etag ?是否有一种方法,我可以创建一个新的etag使用一个函数,所以我可以强制更新整个联系人?
如果是,我如何创建updatePersonFields掩码?
如何处理etag
Contacts API错误。
服务器返回一个400错误,原因"failedPrecondition"如果person.metadata.sources.etag与联系人的etag不同,则表示该联系人在读取其数据后发生了更改。客户端应该获取最新的person,并将他们的更新合并到最新的person中。
<<p>来源/em>
所以你认为你需要etag
来完成你想要的操作是正确的。
但是,生成它不是正确的方法。
您需要首先使用任何personFields
进行简单的get
请求以获得当前的etag
值。然后您将在更新中使用此etag
值。
这是为了防止您覆盖和复制可能重要的信息。
参考updateContact
get