Ошибка «область действия https://graph.microsoft.com/Calendars.Read недопустима» при получении токена доступа для моего приложения - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь использовать API MS Graph для доступа к событиям календаря пользователя, но при попытке получить токен доступа для моего приложения, которое я зарегистрировал в Azure,

Я получаю следующую ошибку:

Ошибка: область действия https://graph.microsoft.com/Calendars.Read недействительна.

Ниже мой код:

string token = string.Empty;
            IConfidentialClientApplication app;
            app = ConfidentialClientApplicationBuilder.Create("ClientID")
                .WithTenantId("TenantID")
                .WithClientSecret("ClientSecret")
                .Build();

            string[] scopes = new string[] { "https://graph.microsoft.com/Calendars.Read" };

            AuthenticationResult result = null;

            try
            {
                result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
                token = result.AccessToken;

                var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider((requestMessage) => {
                    requestMessage
                        .Headers
                        .Authorization = new AuthenticationHeaderValue("bearer", token);

                    return Task.FromResult(0);
                }));

                var events = await graphServiceClient.Users["user1@onTestMicrosoft.com"].Events.Request().GetAsync();


            }
            catch (MsalServiceException ex)
            {
                // Case when ex.Message contains:
                // AADSTS70011 Invalid scope. The scope has to be of the form "https://resourceUrl/.default"
                // Mitigation: change the scope to be as expected
            }

Что я здесь не так делаю?Я уже предоставил разрешение на Calendars.Read на портале Azure при регистрации моего приложения там: https://www.screencast.com/t/jTjnB4SX5I

1 Ответ

1 голос
/ 26 июня 2019

Здесь происходит несколько вещей.

  1. Когда вы используете поток учетных данных клиента, вам необходимо использовать область вида {resource}/.default, где {resource} - этоURL того, к чему вы хотите получить доступ.В этом случае ваша область должна быть https://graph.microsoft.com/.default.( Источник )
  2. Вы не настроили никаких разрешений приложения для регистрации приложения.На снимке экрана вы только сконфигурировали делегированные разрешения, которые являются разрешениями пользователя, для которых требуется авторизованный пользователь.Добавьте Calendars.Read в качестве разрешения приложения, и это должно помочь вам.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...