У меня есть приложение, которое может получить доступ к моему почтовому ящику. Я создал приложение, следуя этому руководству:
https://docs.microsoft.com/en-us/graph/tutorials/aspnet?tutorial-step=1
Затем я адаптировал приложение для чтения почты. Это прекрасно работает для моей собственной почты. Однако мне нужно получить доступ к общему почтовому ящику, к которому у меня есть доступ, и я могу читать электронные письма в моем внешнем виде.
Я попытался сделать это, используя следующий код:
public static async Task<IEnumerable<Message>> GetMailAsync()
{
var graphClient = GetAuthenticatedClient();
var mail = await graphClient.Users["usersemail@somewhere.com"].MailFolders.Inbox.Messages.Request()
.GetAsync();
return mail;
}
Однако я получаю несанкционированную ошибку:
ошибка авторизации
Вот мой код авторизации:
private static GraphServiceClient GetAuthenticatedClient()
{
return new GraphServiceClient(
new DelegateAuthenticationProvider(
async (requestMessage) =>
{
// Get the signed in user's id and create a token cache
string signedInUserId = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
HttpContextWrapper httpContext = new HttpContextWrapper(HttpContext.Current);
TokenCache tokenStore = new SessionTokenStore(signedInUserId,
httpContext).GetMsalCacheInstance();
var idClient = new ConfidentialClientApplication(
appId, redirectUri, new ClientCredential(appSecret),
tokenStore, null);
var accounts = await idClient.GetAccountsAsync();
// By calling this here, the token can be refreshed
// if it's expired right before the Graph call is made
var result = await idClient.AcquireTokenSilentAsync(
graphScopes.Split(' '), accounts.FirstOrDefault());
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", result.AccessToken);
}));
}
Я добавил разрешения в приложении Изображение разрешений приложения
Может кто-нибудь заметить, что я здесь делаю неправильно? Некоторые сообщения говорят, что это невозможно сделать таким образом ( Microsoft Graph API .NET не может читать общую почту , Microsoft Graph API SDK .NET Проблемы с получением писем других пользователей ), но Я могу заставить его работать в графическом обозревателе.
Любая помощь приветствуется, включая советы по улучшению моих вопросов.