通过Microsoft Graph API邀请Azure AD中的用户无效

时间:2018-01-04 12:35:53

标签: 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") { }
}

1 个答案:

答案 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来电。