Вызов, чтобы получить список сообщений для разговора запрещено, тот же вызов отлично работает в Graph Explorer - PullRequest
0 голосов
/ 03 марта 2020

У меня есть регистрация канала бота с настроенными настройками соединения OAuth. Параметры подключения OAuth определяют следующие области действия: Chat.ReadWrite User.Read User.ReadBasic.All email openid profile.

Соответствующая регистрация приложения настроена для доступа к Учетным записям в любом организационном каталоге (Любой Azure AD каталог - Multitenant) :
supported account types

В указанной регистрации приложения настроены разрешения в соответствии с запросом регистрации канала бота:
configured permissions

Я могу получить токен доступа из кода бота, используя регистрация этого канала бота, выполнив следующее (после входа в систему и согласия на запрашиваемые разрешения):

await botAdapter.GetAadTokensAsync(
    turnContext,
    oauthConnectionName, // the connection name as configured in the bot channel registration
    new string[] { "https://graph.microsoft.com" },
    turnContext.Activity.From.Id, // the Teams Id of the action invoker, a.k.a me
    cancellationToken);

Я использую Microsoft.Graph.Beta версия 0.12.0-preview пакет nuget с Microsoft.Bot.Builder версия 4.7.2 пакет nuget.

Графический клиент построен так:

var graphClient = new GraphServiceClient(
    new DelegateAuthenticationProvider((request) =>
    {
        request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
        return Task.CompletedTask;
    }));

Наконец, вызов, вызывающий сообщение об ошибке «Запрещено»:

await graphClient.Chats[conversationId].Messages.Request().GetAsync();

Это соответствует вызову Graph API https://graph.microsoft.com/beta/chats/<conversationId>/messages. Этот вызов, однако, успешно выполняется при вызове из Graph Explorer.

Я могу подтвердить, что утверждение scp токена доступа содержит области разрешений, о которых я упоминал выше: Chat.ReadWrite User.Read User.ReadBasic.All email openid profile. Те же области также есть в токене доступа, используемом Graph Explorer.

К разговору MS Teams, представленному <conversationId>, присоединяется владелец этого токена доступа, а также бот.

Так почему этот вызов не выполняется из моего кода, но не вызывает его при вызове из Graph Explorer?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...