В настоящее время я использую Bot Framework v3 SDK для C #.Моя проблема возникает, когда я выхожу из системы, она не удаляет учетные данные пользователя из всплывающего окна (Примечание: всплывающее окно открывает браузер в приложении, а не мой браузер).Поэтому, когда мой бот предлагает пользователю снова войти в систему (используя карту входа), приглашение на вход в систему для учетных записей Microsoft (https://login.microsoftonline.com/common
) появляется на короткую секунду или две перед автоматическим закрытием.Мой бот получает токен доступа на основе ранее вышедшего пользователя.Моими средами тестирования являются Microsoft Teams и Bot Emulator.
Для входа я использую GetTokenDialog
в пространстве имен Microsoft.Bot.Builder.Dialogs
, который обрабатывает вход пользователя и обменивает токен авторизации на токен доступа.Эта часть работает правильно, так как я могу делать вызовы MS Graph с этим токеном доступа.
Чтобы выйти, в настоящее время я использую библиотеку расширений, предоставляемую в Microsoft.Bot.Builder.Dialogs
пространстве имен.
bool success = await context.SignOutUserAsync(ConnectionName);
, где context
- это объект IDialogContext
, а ConnectionName
- это строка с именем соединения OAuth моего AAD.
Используя Fiddler, я знаю, что этот единственный оператор кода отправляет HTTP-запрос DELETE на token.botframework.com
, чтобы удалить токен из службы ботов Azure.Он возвращает логическое значение в зависимости от кода состояния ответа HTTP, и я всегда получаю значение true
.Мой токен удален из службы ботов Azure, но всплывающее окно для входа автоматически подписывает пользователя на основании предыдущих учетных данных.Это заставляет меня поверить, что await context.SignOutUserAsync(ConnectionName);
не обращается к Microsoft Online с просьбой выйти из системы, чтобы любезно выйти из системы моего пользователя, а только удаляет токен из службы ботов Azure.
Любая документация и примеры, которые я нашел в Интернете, используют это единственное утверждение кода для выхода из системы.Что-то не так / отсутствует в том, что я делаю?Есть ли альтернативы, чтобы обойти эту проблему?