解决方案是使用Web API从Azure AD邀请来宾用户,但是大部分属性都可以添加,但只有赞助商没有添加
DirectoryObject
,这个APP具有所有User.ReadWrite
所有权限,尝试了很多方法,但无法添加,请任何人帮忙。
财产赞助人异常无效0
这是代码:
Sponsors = new List<DirectoryObject>
{
new DirectoryObject
{
AdditionalData = new Dictionary<string, object>()
{
{
"sponsors","testuser"
}
}
}
}
我希望邀请一位访客用户,其邀请负载中具有“赞助商”值,以便在访客用户信息中添加赞助商。
Microsoft Graph 中的
invitation
资源没有直接的“赞助商”字段,这可能就是您遇到 "invalid property 'sponsors'"
错误的原因。
"sponsors"
不是标准属性,您需要使用 Azure AD 中的自定义扩展来定义它。这将允许您将赞助商信息存储为用户个人资料的一部分。要创建存储
sponsors
字段的扩展,您可以使用 Microsoft Graph 定义架构。
API请求:
POST https://graph.microsoft.com/v1.0/applications/{application-id}/extensionProperties
Content-Type: application/json
{
"name": "sponsors",
"dataType": "String",
"targetObjects": [
"User"
]
}
以下是如何在邀请访客用户时将“赞助商”信息添加到其个人资料中
var invitation = new Invitation
{
InvitedUserEmailAddress = "[email protected]",
InviteRedirectUrl = "https://yourapp.com",
SendInvitationMessage = true,
AdditionalData = new Dictionary<string, object>
{
// Use the extension schema to add the sponsors value
{ "extension_{app-client-id}_sponsors", "SponsorUserNameOrID" }
}
};
await graphClient.Invitations.Request().AddAsync(invitation);
邀请来宾用户并将其添加到 Azure AD 后,我们可以通过 Microsoft Graph 检索或更新赞助商信息。
检索具有赞助商的用户:
var user = await graphClient.Users["[email protected]"]
.Request()
.Select("id,displayName,extension_{app-client-id}_sponsors")
.GetAsync();
var sponsors = user.AdditionalData["extension_{app-client-id}_sponsors"];