Len*_*y D 5 c# azure-active-directory azure-ad-graph-api
我正在使用带有 .Net Core 2 的 GraphServiceClient。我正在尝试使用以下代码将 AdditionalData 添加到我的用户
var updated = new User()
{
AdditionalData = new Dictionary<string, object>
{
{"OtherEmail", otherEmail},
{"OtherRole", otherRole}
},
};
await _graphClient.Users[user.Id].Request().UpdateAsync(updated);
Run Code Online (Sandbox Code Playgroud)
执行此操作时出现以下错误
Microsoft.Graph.ServiceException:代码:Request_BadRequest 消息:指定的一个或多个属性值无效。
有谁知道我做错了什么?
另外,如果有人能告诉我如何才能针对用户保存我自己的一些元数据,我将不胜感激。我也尝试过使用扩展,但我遇到了这个问题。
要将属性添加到AdditionalData字段,您必须在Azure AD B2C > 用户属性(在 Azure 门户中)中定义属性。例如,如果您创建一个布尔属性Dummy,这将创建一个字段extension_{b2c-extensions-app-id}_Dummy,其中{b2c-extensions-app-id}是自动生成的可查看内容的应用程序 IDb2c-extensions-app,方法是导航到Azure AD B2C > 应用程序注册(预览版)> b2c-extensions-app,并 从其中删除破折号 ( ) -ID!
这将允许您执行以下操作:
var updated = new User()
{
AdditionalData = new Dictionary<string, object>
{
{"extension_0000000000000000000000000000_Dummy", false}
},
};
await _graphClient.Users[user.Id].Request().UpdateAsync(updated);
Run Code Online (Sandbox Code Playgroud)
所以我使用 OpenExtensions 解决了这个问题,这也给我带来了很多问题,可以在这里看到。
Azure AD GraphServiceClient 扩展不起作用
技巧是添加这样的扩展
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);
Run Code Online (Sandbox Code Playgroud)
然后像这样检索它们。
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;
Run Code Online (Sandbox Code Playgroud)
希望对某人有帮助!
| 归档时间: |
|
| 查看次数: |
2258 次 |
| 最近记录: |