我正在将GraphServiceClient与.Net Core 2一起使用。我正在尝试使用以下代码向我的用户添加AdditionalData。

var updated = new User()
                {
                   AdditionalData = new Dictionary<string, object>
                    {
                        {"OtherEmail", otherEmail},
                        {"OtherRole", otherRole}
                    },
                };

                await _graphClient.Users[user.Id].Request().UpdateAsync(updated);


执行此操作时,出现以下错误


  Microsoft.Graph.ServiceException:代码:Request_BadRequest消息:
  指定的一个或多个属性值无效。


有人知道我在做什么错吗?

另外,如果有人可以告诉我如何将自己的一些元数据保存给用户,将不胜感激。我也尝试过使用扩展名,但是我遇到了这个问题。

Azure AD GraphServiceClient Extensions not working

最佳答案

所以我使用OpenExtensions解决了这个问题,这也给我带来了很多问题,可以在这里看到。

Azure AD GraphServiceClient Extensions not working

技巧是添加这样的扩展名

extension = new OpenTypeExtension
                {
                    ExtensionName = AzureADExtensions.UserConstants.ExtensionName,
                    AdditionalData = new Dictionary<string, object>
                    {
                        {"OtherEmail", externalUser.Email},
                        {"OtherRole" , externalUser.Roles.FirstOrDefault()}
                    }
                };

                await _graphClient.Users[user.Id].Extensions.Request()
                    .AddAsync(extension);


然后像这样检索它们。

user = await _graphClient
                    .Users[userId]
                    .Request()
                    .GetAsync();
// Note : you should be able to expand this on original request, but fails for me.
                var extensions = await _graphClient.Users[user.Id].Extensions.Request().GetAsync();
                user.Extensions = extensions;


希望能对某人有所帮助!

10-08 12:48