【发布时间】:2019-01-16 07:36:07
【问题描述】:
使用 Microsoft Graph API,我能够获得 Azure Active Directory 租户中所有用户的列表,并确定他们是否有个人资料图片。然后我想获取没有照片的用户列表并为他们上传一张,但是即使我使用的帐户对所有用户帐户具有完全访问权限并且应用程序设置为具有完全权限,API 也会返回 403 错误到图形 API。
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri("https://graph.microsoft.com/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("image/jpeg"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", oauthToken);
// HTTP GET
HttpResponseMessage response = await client.PatchAsync($"v1.0/users/{emailAddress}/photo/$value", byteContent);
if (!response.IsSuccessStatusCode)
{
throw new Exception("Error!");
}
}
403 禁止
是否无法使用 Graph API 执行此操作,还是我在某处缺少权限?
SCP 值为: Calendars.Read Calendars.ReadWrite Contacts.Read Contacts.ReadWrite Directory.AccessAsUser.All Directory.Read.All Directory.ReadWrite.All email Exchange.Manage Files.Read Files.Read.Selected Files.ReadWrite Files.ReadWrite.AppFolder Files.ReadWrite .Selected full_access_as_user Group.Read.All Group.ReadWrite.All Mail.Read Mail.ReadWrite Mail.Send MailboxSettings.ReadWrite Notes.Create Notes.Read Notes.Read.All Notes.ReadWrite Notes.ReadWrite.All Notes.ReadWrite.CreatedByApp offline_access openid People.Read People.ReadWrite profile Sites.Read.All Tasks.Read Tasks.ReadWrite User.Read User.Read.All User.ReadBasic.All User.ReadWrite User.ReadWrite.All
【问题讨论】:
-
您能否在jwt.calebb.net 输入您的令牌并给我们“scp”字段的值。这是您的令牌中的权限列表。谢谢。
-
嗨 Venkat,我将 SCP 属性值添加到原始帖子中,因为它太长而无法作为评论输入。
-
不确定该操作是否适用于 PATCH。它应该是一个 PUT。但是,我也重现了相同的问题(以管理员用户身份运行),这是跟踪。范围包含 user.readwrite.all 应该足以更新另一个用户的照片。 { "error": { "code": "ErrorAccessDenied", "message": "访问被拒绝。检查凭据并重试。", "innerError": { "request-id": "23559b24-d5e9-4dae-8311 -94f706320b4b", "日期": "2016-04-09T06:21:56" } } }
-
如何获得令牌?来自 clientid + clientsecret ?
-
嗨,Dan,我使用的是 PATCH,因为 Graph documentation 提到使用 PATCH 方法,但我也使用 PUT 进行了尝试,但它也不起作用。我开始认为 API 不允许更新其他用户的照片。
标签: c# azure office365 azure-active-directory microsoft-graph-api