Я хочу обновить изображение своего профиля пользователя и изображение профиля другого пользователя с помощью Graph API на C#.
У меня есть все разрешения в Microsoft Azure на любые действия с использованием кода.
Как это можно сделать?
Обязательно предоставьте User.ReadWrite.All
разрешение API типа приложения:
Чтобы обновить фотографию профиля пользователя, используйте следующий код:
using System;
using System.IO;
using System.Threading.Tasks;
using Azure.Identity;
using Microsoft.Graph;
namespace UserProperties
{
public class GraphHandler
{
public GraphServiceClient GraphClient { get; set; }
public GraphHandler()
{
var tenantId = "TenantID";
var clientId = "ClientID";
var clientSecret = "ClientSecret";
GraphClient = CreateGraphClient(tenantId, clientId, clientSecret);
}
public GraphServiceClient CreateGraphClient(string tenantId, string clientId, string clientSecret)
{
var options = new TokenCredentialOptions
{
AuthorityHost = Azure.Identity.AzureAuthorityHosts.AzurePublicCloud
};
var clientSecretCredential = new Azure.Identity.ClientSecretCredential(tenantId, clientId, clientSecret, options);
var scopes = new[] { "https://graph.microsoft.com/.default" };
return new GraphServiceClient(clientSecretCredential, scopes);
}
public async Task<bool> UpdateProfilePicture(string userId, string imagePath)
{
try
{
using (var stream = new FileStream(imagePath, FileMode.Open))
{
await GraphClient.Users[userId].Photo.Content.PutAsync(stream);
Console.WriteLine("Profile picture updated successfully.");
return true;
}
}
catch (ServiceException ex)
{
Console.WriteLine($"Error updating profile picture: {ex.Message}");
return false;
}
}
}
class Program
{
static async Task Main(string[] args)
{
var handler = new GraphHandler();
var userId = "UserID"; // Replace with the desired user's ID
await handler.UpdateProfilePicture(userId, "C:\\Users\\rukmini\\Downloads\\ruk.jpg");
}
}
}
Фотография профиля успешно обновлена:
В чем ошибка?
Я получаю сообщение об ошибке типа: Было выбрано исключение типа «Microsoft.Fast.Profile.Core.Exception.ImageNotFoundException». - и путь к изображению идеален, но я не знаю, почему он выдает мне эту ошибку.
Попробуйте любой другой путь к изображению, так как это ошибка с изображением, а не кодом.
Я попробовал, но это не работает. что-то не так, когда они пытаются обновить изображение.
Работает ли он с UserID, а не с UPN?
Да, именно, с UserID работает, но не с UPN.
Можете ли вы опубликовать это как новый вопрос, я проверю
Я хочу, чтобы все пользователи использовали Graph API, но я получаю только 100 лучших пользователей, я хочу, чтобы все пользователи были, как мне это сделать.
Конечно, проверяю новый вопрос, который вы опубликовали.
Если вы получаете сообщение об ошибке Microsoft.Fast.Profile.Core.Exception.ImageNotFoundException
при попытке обновить фотографию пользователя через Graph API (или Set-MgUserPhotoContent), убедитесь, что вы используете UserID
, а не UPN
(UserPrincipalName) в качестве параметра для идентификации пользователя.
По какой-то причине, если у пользователя нет почтового ящика, он работает только с UserID
. Так что лучше используйте UserID
постоянно.
Я пытаюсь обновить фотографию профиля, используя userPrincipalName вместо userId, но это не работает.