Я работаю над расширением обмена сообщениями и пытаюсь получить адрес электронной почты пользователя, который использует приложение.
Это приложение используется внутри компании, и я использую адрес электронной почты, чтобы запросить в 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.