调用Google Contacts API更新联系人遇etag缺失错误如何解决?
解决Google Contacts API更新联系人时的etag错误
错误原因
Google Contacts API通过etag实现乐观并发控制,防止你在更新时覆盖其他操作对联系人数据的修改,因此要求更新请求必须携带对应版本的etag值。
解决步骤
第一步:获取目标联系人的完整数据及etag
调用people.get接口(或对应联系人查询接口),获取要更新的联系人完整信息,从中提取person.etag(全局etag)或person.metadata.sources.etag(对应数据源的etag)。第二步:在更新请求中携带etag
两种携带方式选其一即可:- 全局etag方式:在更新请求的JSON体中直接包含
etag字段,值为获取到的全局etag:{ "etag": "从API获取的全局etag值", "names": [ { "givenName": "张三" } ] // 其他需要更新的字段 } - 数据源etag方式:如果针对特定数据源更新,需同时指定数据源ID和对应etag:
{ "metadata": { "sources": [ { "id": "目标数据源ID", "etag": "对应数据源的etag值" } ] }, "phoneNumbers": [ { "value": "138xxxxxxx" } ] }
- 全局etag方式:在更新请求的JSON体中直接包含
注意事项
- etag必须使用从API获取的原始值,不能手动修改。
- 如果获取联系人后,该联系人被其他操作修改,etag会失效,此时需要重新获取最新的联系人数据和etag,再发起更新请求。
内容的提问来源于stack exchange,提问作者OneClapp OneClapp
相关产品推荐
相关产品推荐

