GraphAPI возвращает «Ресурс не найден» при попытке получить список электронной почты

#c# #microsoft-graph-api

Вопрос:

GraphAPI позволяет мне проходить аутентификацию в моем приложении, но возвращаемый ресурс не может быть обнаружен при попытке получить мои сообщения электронной почты, календарь или что-либо еще. После проверки подлинности область, возвращенная из запроса на проверку подлинности, совпадает с областью, которую я настроил на портале Azure для приложения. Информация моего профиля также верна.

Я был бы очень признателен за любую помощь в этом.

Спасибо!

 string scope = "https://graph.microsoft.com/.default";

var builder = PublicClientApplicationBuilder.Create(ClientId)
    .WithAuthority($"{Authority}{Tenant}")
    .WithDefaultRedirectUri();

_clientApp = builder.Build();
TokenCacheHelper.EnableSerialization(PublicClientApp.UserTokenCache);

AuthenticationResult authResult = null;
IAccount firstAccount;

var accounts = await PublicClientApp.GetAccountsAsync();
firstAccount = accounts.FirstOrDefault();

try
{
    authResult = await PublicClientApp.AcquireTokenSilent(scope, firstAccount)
        .ExecuteAsync();
}
catch (MsalUiRequiredException)
{
    try
    {
        authResult = await PublicClientApp.AcquireTokenInteractive(scope)
            .WithAccount(firstAccount)
            .WithPrompt(Microsoft.Identity.Client.Prompt.SelectAccount)
            .ExecuteAsync();
    }
    catch (MsalException msalex)
    {
        Console.WriteLine($"Error Acquiring Token:{System.Environment.NewLine}{msalex}");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"Error Acquiring Token Silently:{System.Environment.NewLine}{ex}");
    return false;
}

if (authResult != null)
{
    try
    { 
        var graphClient = new GraphServiceClient(
            new DelegateAuthenticationProvider(
                (requestMessage) =>
                {
                    requestMessage.Headers.Authorization = new AuthenticationHeaderValue("bearer", authResult.AccessToken);
                    return (Task.FromResult(0));
                }
        ));

        var me = await graphClient.Me.Request().GetAsync();
        mUserName = me.DisplayName;           // This works!

        try
        {
            var messages = await graphClient.Me.Messages
                .Request()                    // This fails
                .GetAsync();
        }
        catch (Exception) {}
    }
}
 

}

Ответ №1:

Спасибо за обращение, вы подготовили почтовый ящик для этого пользователя? Отсутствие почтового ящика может быть причиной, по которой эта ошибка возвращается при попытке получить сообщения.

Комментарии:

1. Приведенный выше код предлагает мне войти в систему. Я получаю эту ошибку в своем личном аккаунте. Я могу видеть свои сообщения при входе в обозреватель графиков.