Моя цель - использовать SSO и молча принести токен, используя OAuthprompt. Это в клиенте MS Teams, когда бот загружается как пользовательское приложение. < /P>
Код: Выделить всё
private async Task PromptStepAsync(WaterfallStepContext stepContext, CancellationToken ct)
{
return await stepContext.BeginDialogAsync(nameof(OAuthPrompt), null, ct);
}
private async Task LoginStepAsync(WaterfallStepContext stepContext, CancellationToken ct)
{
var tokenResponse = (TokenResponse)stepContext.Result;
if (tokenResponse?.Token == null)
{
await stepContext.Context.SendActivityAsync(MessageFactory.Text("Login was not successful, please try again."), ct);
return await stepContext.EndDialogAsync(cancellationToken: ct);
}
...
}
Проблем api.botframework.com/api/usertoken/gettoken и возвращает 404, после чего он пытается отправить карту OAuth (не показывает, когда я устанавливает URL -адрес для обмена токена в соединении бота). Когда он вызовет во второй раз, он возвращает 200.protected override async Task OnTeamsSigninVerifyStateAsync(ITurnContext turnContext, CancellationToken cancellationToken)
{
await _loginDialog.RunAsync(turnContext, _conversationState.CreateProperty(nameof(DialogState)), cancellationToken);
}
< /code>
и я заметил, что это не поразит. Однако, когда я снял команды, адаптер Teamssotokenexchangemiddle с адаптера бота, функция получает удар, и это приводит к тому, что диалоговое окно входа в систему начинается снова, и я получу токен с первой попытки. Тем не менее, я не знаю, ожидается ли это поведение, потому что в образце Microsoft они используют обе команды Sotokenexchangemiddleware и OnteamsSignInverifyStateAsync. < /P>
Бот, кажется, работает нормально, когда я не использую TeamssotokenexChangeMiddle, но я чувствую, что я не так, что я не так. OAuthPrompt не должен возвращать 404, даже если его вызовут в первый раз? URL и токен носителя одинаково оба раза, поэтому я не знаю, почему он иногда возвращает 404, а иногда и 200.
Подробнее здесь: https://stackoverflow.com/questions/797 ... signinveri
Мобильная версия