以下是我在Azure AD中邀请用户的代码。
我收到了“未经授权”的回复。我不确定缺少什么权限/设置。有没有人有这个想法。
string accessToken = await AuthenticationHelper.GetTokenForApplication ();
InvitationModel invite = new InvitationModel ();
invite.invitedUserEmailAddress = user.Email;
invite.inviteRedirectUrl = ConfigurationManager.AppSettings["InviteRedirectUrl"];
invite.sendInvitationMessage = true;
using (HttpClient client = new HttpClient ()) {
client.BaseAddress = new Uri ("https://graph.microsoft.com");
client.DefaultRequestHeaders.Accept.Add (
new MediaTypeWithQualityHeaderValue ("application/json"));
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue ("Bearer", accessToken);
HttpResponseMessage response =
client.PostAsJsonAsync<InvitationModel> ("v1.6/invitations", invite).Result;
dynamic inviteResult =
response.Content.ReadAsAsync<dynamic> ().Result;
if (inviteResult.status != "Error") { }
}
答案 0 :(得分:5)
您遇到的问题是您在此处将Microsoft Graph和Azure AD Graph混为一谈。这是两个不同的API,具有不同的调用转换和权限范围。
为了create an Invitation您需要使用以下permission scopes:
User.Invite.All
User.ReadWrite.All
Directory.ReadWrite.All
请注意,所有这些范围都是管理员限制的,需要Admin Consent才能使用
获得有效令牌后,您需要通过以下机构与POST
进行https://graph.microsoft.com/v1.0/invitations
来电:
{
"invitedUserEmailAddress": "yyy@test.com",
"inviteRedirectUrl": "https://myapp.com"
}
由于您使用的是C#,我强烈建议您使用Microsoft Graph Client Library,而不是手动滚动自己的HttpClient
来电。