如何使Microsoft Graph获取用户详情的响应包含用户ETag值?
解决Microsoft Graph获取用户无ETag的问题
- 必须在请求头中添加
ConsistencyLevel: eventual,这是触发Graph返回ETag的必要条件,尤其是针对Beta版本的AD B2C用户对象。 - 查询时不能只选择只读属性(比如
Id、DisplayName),需要包含至少一个可写属性。ETag基于可修改属性生成,只读属性组合不会触发ETag返回。例如修改查询为:https://graph.microsoft.com/beta/users/:userId?$select=Id,DisplayName,givenName - 确认应用权限配置正确:需拥有
User.ReadWrite.All或User.Read.All权限(更新场景建议用写权限),且已完成管理员同意(应用权限模式下)。 - 针对AD B2C用户,确保用户对象存在可写属性(哪怕是空值),只要查询包含这类属性并加上
ConsistencyLevel头,就能在响应头中拿到ETag。
拿到ETag后,在后续更新请求的If-Match头中传入该值,即可实现乐观并发控制。
内容的提问来源于stack exchange,提问作者IConfuseEasily
相关产品推荐
相关产品推荐

