2 azure-active-directory microsoft-graph
以下是我在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") { }
}
Run Code Online (Sandbox Code Playgroud)
您的问题在于,您在此处将Microsoft Graph和Azure AD Graph进行了合并。这是两个不同的API,具有不同的调用转换和权限范围。
为了创建一个邀请您将需要下列之一的许可范围(注意,第一个是最严格的权限(全局),最后最宽松):
User.Invite.All
User.ReadWrite.All
Directory.ReadWrite.All
请注意,所有这些范围都是受管理员限制的,在使用它们之前需要获得管理员同意
拥有有效令牌后,您需要使用以下主体进行POST
调用https://graph.microsoft.com/v1.0/invitations
:
{
"invitedUserEmailAddress": "yyy@test.com",
"inviteRedirectUrl": "https://myapp.com"
}
Run Code Online (Sandbox Code Playgroud)
由于您使用的是C#,因此我强烈建议您使用Microsoft Graph Client Library,而不是手动滚动自己的HttpClient
调用。
归档时间: |
|
查看次数: |
731 次 |
最近记录: |