google-contacts-api - 有什么方法可以绕过 People API 中的 Etag 检查?
问题描述
Google 通讯录允许我们通过传递 * 而不是联系人当前的 Etag 来绕过 Etag 验证以进行编辑/删除请求。
注意:特殊的 Etag 值 * 可用于绕过此验证并处理更新,而不管来自其他客户端的更新。
是否有任何类似的方法可以绕过 Etag 验证以在People API中进行编辑/删除?
如果在更新期间未在 Person 对象中发送 etag 值,则会面临以下错误。值“ * ”在 People API 中也不起作用。
要求:
{
"emailAddresses": [
{
"displayName": "test1@gmail.com",
"value": "test1@gmail.com",
"type": "home"
}
]
}
回复:
{
"error": {
"code": 400,
"message": "Request must set person.etag or person.metadata.sources.etag for the source that is being updated.",
"status": "INVALID_ARGUMENT"
}
}
解决方案
您必须在删除和更新请求中发送资源名称。
删除请求只需要资源名称。
更新请求需要资源名称和人员。IMO 最好的更新方法是先获取 Person,然后更新数据,然后将其推回。
如果您不使用他们的 API 之一,也需要 updateMask https://developers.google.com/people/api/rest/v1/people/updateContact?hl=en
请参阅https://developers.google.com/people/api/rest/v1/people/updateContact?hl=en
如果 person.metadata.sources.etag 与联系人的 etag 不同,则服务器返回 400 错误,原因为“failedPrecondition”,这表明联系人在读取其数据后已更改。客户应该获取最新的人并将他们的更新合并到最新的人中。
简而言之,您可能只使用 *
推荐阅读
- java - 演示缓存的使用,包括 ArrayList、二维数组和基本循环
- php - 插入多值 MySQL 和 PHP
- php - 使用 PHP socket_write 发送空格
- python - 从 Cocoa 应用程序针对 Apple 的股票 python 运行 python 脚本
- regex - 这个涉及否定和前后修复的正则表达式可以改进吗?
- sql - SQL Server Management Studio - 只执行一个查询,而不是整个脚本?
- sqlite - 如何将日期列从“月年”(例如 2018 年 3 月)转换为 SQLite 中的 ISO 格式?
- jquery - 如果请求响应在成功时变得空白,如何停止新的 ajax 调用?
- jsonschema - 不清楚propertyNames的含义
- android - 在 iOS 和 Android 上使用 Delphi 在后台扫描信标