Я хочу читать почту пользователя из консольного приложения .net без взаимодействия с пользователем. Я хотел бы предоставить приложению доступ только для чтения почты выбранного пользователя (ов), а не как глобальный администратор, который может читать почту всех пользователей. Я хотел бы использовать библиотеку .net Microsoft.Graph, а не интерфейс REST. Я думаю, что мне нужно более или менее пошаговые инструкции, в этом я могу семь возможных
Я создал новую регистрацию приложения и секрет клиента. Если я даю разрешение приложения на почту, оно работает, но я не могу получить делегированное разрешение. на работу.
Код является лишь одним из многих, которые я пробовал, но я не могу найти ни одного, который делает то, что я хочу.
var tenantId = "domain123.onmicrosoft.com";
var client_Id = "1234567789";
var client_Secret = "123243456777";
var scopes = new[] { "https://graph.microsoft.com/.default" };
// Configure app builder
var authority = $"https://login.microsoftonline.com/{tenantId}";
var app = ConfidentialClientApplicationBuilder
.Create(client_Id)
.WithClientSecret(client_Secret)
.WithAuthority(new Uri(authority))
.WithLogging(MyLoggingMethod, LogLevel.Verbose,
enablePiiLogging: true,
enableDefaultPlatformLogging: true)
.Build();
// Acquire tokens for Graph API
var authenticationResult = await app.AcquireTokenForClient(scopes).ExecuteAsync();
// Create GraphClient and attach auth header to all request (acquired on previous step)
var graphClient = new GraphServiceClient(
new DelegateAuthenticationProvider(requestMessage =>
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("bearer", authenticationResult.AccessToken);
return Task.FromResult(0);
}));
// Call Graph API
var user = await graphClient.Users["user123@domain123.onmicrosoft.com"].Messages.Request().GetAsync();
Код: NoPermissionsInAccessToken Сообщение: токенне содержит разрешений, или разрешения не могут быть поняты.
Внутренняя ошибка