【问题标题】:Updating Skills property of User through MS Graph API fails通过 MS Graph API 更新用户的技能属性失败
【发布时间】:2020-05-25 10:08:07
【问题描述】:

我正在尝试更新用户的“技能”属性(注意:不使用 Me 端点)。这将返回一个异常。我正在使用 .NET SDK GraphServiceClient 这样做,使用最新的 3.6.0 版本。

复制

重现行为的步骤,使用以下示例代码:

var user = new User()
{
  Skills = skills
};
await graphClient.Users[userId].Request().UpdateAsync(user);

预期行为

我希望此代码向 Graph API 端点发送 POST 请求,并且该请求应更新给定使用的 Skills 属性,前提是已在 Azure AD 中授予经过身份验证的服务 User.ReadWrite.All 权限(其中它有)。

相反,Graph 端点返回以下错误:

  "error": {
    "code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException",
    "message": "A type named 'Microsoft.SharePoint.user' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
    "innerError": {
      "request-id": "1948a4ec-60fd-4212-873f-3d34f62f5601",
      "date": "2020-05-25T09:35:33"
    }
  }
}

不知道为什么这不起作用。我遵循了这些示例,尽管这些示例没有特别提到更新 Skills 属性,但您希望这对所有属性都同样有效。当我从更新的User 对象中省略该属性时,我没有得到错误的回报(但显然在这种情况下没有任何更新)。

【问题讨论】:

  • 您好,如果发布的任何答案都解决了您的问题,请单击箭头标记答案并单击下面的表情符号进行验证。这样做有助于其他人找到相关问题的答案。

标签: azure-active-directory microsoft-graph-api


【解决方案1】:

在 Baywet 提到的 v1 中修复之前,您还可以使用以下解决方案来解决您的方案。

Graph 客户端默认将 odata.type 添加为 microsoft.graph.user 并且 sharepoint 并不期望该值。您可以将 oDataType 更改为“https://graph.microsoft.com/v1.0/$metadata#users/$entity”或“Microsoft.SharePoint.user”或 null,以便 sharepoint 可以理解类型。

您可以通过

设置oDatatype
var user = new User()
{
  Skills = skills
};
user.ODataType = "https://graph.microsoft.com/v1.0/$metadata#users/$entity";
await graphClient.Users[userId].Request().UpdateAsync(user);

【讨论】:

  • 设置类型不起作用。切换到 beta 端点工作了一点,但不是完全。请参阅我在@baywet 的帖子下发布的评论
【解决方案2】:

这是一个持续存在的问题,正在服务中解决。测试版应该已经修复,v1 正在进行中。

作为一种解决方法,您可以使用 Beta 版本,也可以在不使用 odata 类型的情况下手动制作请求。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 1970-01-01
相关资源
最近更新 更多