GetConversationMembersAsync возвращает 403 (запрещено) - PullRequest
0 голосов
/ 19 декабря 2018

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

Это приложение используется внутри компании, и я использую адрес электронной почты, чтобы запросить в Active Directory имя пользователя.

При попытке использовать метод GetConversationMembersAsync я получаю исключение 403 (Запрещено).

Я выполняю это через IIS Express в Visual Studio 2017.

    [BotAuthentication, TenantFilter]
public class MessagesController : ApiController
{
    static string AppID = ConfigurationManager.AppSettings["MicrosoftAppId"];
    static string AppPassword = ConfigurationManager.AppSettings["MicrosoftAppPassword"];

    [HttpPost]
    public async Task<HttpResponseMessage> Post([FromBody] Activity activity)
    {
        using (var connector = new ConnectorClient(new Uri(activity.ServiceUrl)))
        {
            var members = await connector.Conversations.GetConversationMembersAsync(activity.Conversation.Id);

System.UnauthorizedAccessException HResult = 0x80070005 Сообщение = Ошибка авторизации для Microsoft App ID XXX с кодом состояния Запрещено иФраза причины 'Запрещено' Source = Microsoft.Bot.Connector StackTrace: в Microsoft.Bot.Connector.JwtTokenRefresher.d__2.MoveNext () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача) в System.Runtime.CompilerKA.HandleNonSuccessAndDebuggerNotification (задача-задача) в System.Net.Http.HttpClient.d__58.MoveNext () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-задача)..Runtime.CompilerServices.TaskAwaiter.ValidateEnd (Задача) в Microsoft.Bot.Connector.Conversations.d__10.MoveNext () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача) в System.Runtime.CompilerSvices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (задача-задача) в Microsoft.Bot.Connector.ConversationsExtensions.d__11.MoveNext () в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (задача-проблема-служба-приемник.) в System.Runtime.CompilerServices.TaskAwaiter`1.GetResult () в NewApp.Controllers.MessagesController.d__2.MoveNext () в C: \ Users \ xxxx \ source \ repos \ NewApp \ NewApp \ Controllers \ MessagesController.cs: line25

Внутреннее исключение 1: HttpRequestException: Код состояния ответа не указывает на успешность: 403 (запрещено).

Я обнаружил похожую проблему здесь: Авторизация для Microsoft App IDxxx не удалось с кодом состояния Запрещено и фраза причины «Запрещено» .Но это не специально для команд Microsoft.соединитель-> учетные данные-> OAuthScope показывает «api.botframework.com/.default», но я считаю, что это правильно для команд.

Мой MicrosoftAppId и MicrosoftAppPassword верны.Если я закомментирую [BotAuthentication, TenantFilter], я получу 401 Несанкционированное исключение.Если я закомментирую строку с GetConversationMembersAsync, приложение будет работать.

Я следую приведенным здесь инструкциям, чтобы попытаться получить эту контекстную информацию: https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/bots/bots-context.

...