如何使用 Microsoft Graph 更新个人资料图片 API

How to Update Profile Picture with Microsoft Graph API

我正在开发一个 .Net Core 3.1 API,它将连接到 Microsoft Graph 以更新公司员工的照片。

但是,我在几个地方进行了搜索,但没有找到任何代码或方法可以帮助我在不使用该用户帐户登录的情况下更改该用户的照片。

有什么方法可以在不登录的情况下使用 Microsoft Graph 更改用户的照片?

记住我的用户是 Azure AD 的管理员并且我的应用程序已发布“User.ReadWrite.All”。

首先,您需要this api, and as you can see it provides the application permission so that you can use client credential flow生成访问令牌并使用它来调用api。客户端凭据流使得用户无需登录和生成访问令牌,即可满足您的要求。

这是详细信息,您可以通过此请求生成令牌,请不要为您的 azure ad app 设置 User.ReadWrite.All application permission:

您可以使用这样的令牌调用 api:

如果您发现您的令牌无法正常工作,也许您也可以尝试将 Group.ReadWrite.All application permission 添加到您的 azure 广告应用程序,因为这是 [=31= 中提到的 known issue ] 文件。

也许你需要的是代码片段,那么你可以使用graph sdk调用ms graph api:

var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "your_tenant_name.onmicrosoft.com";
var clientId = "azure_ad_app_client_id";
var clientSecret = "client_secret_for_the_azuread_app";
var clientSecretCredential = new ClientSecretCredential(
    tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
using var stream = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(@"Binary data for the image"));

await graphClient.Users["user_id_which_you_wanna_change_photo_for"].Photo.Content
    .Request()
    .PutAsync(stream);