Microsoft Bot V4身份验证

时间:2019-12-30 06:07:38

标签: azure authentication botframework

我正在使用带有以下代码的登录对话框。我怎么知道用户是否通过身份验证?

    namespace Sample.Dialogs
    {
     public class LoginDialog : ComponentDialog
     {
        private readonly BotStateService _botStateService;
        public LoginDialog(string dialogId, BotStateService botStateService) : base(dialogId)
        {
            _botStateService = botStateService ?? throw new 
             System.ArgumentNullException(nameof(botStateService));
             InitializeWaterfallDialog();
        }

        private void InitializeWaterfallDialog()
        {
            AddDialog(new OAuthPrompt(
               nameof(OAuthPrompt),
               new OAuthPromptSettings
               {
                   ConnectionName = "",
                   Text = "Please login",
                   Title = "Login",
                   Timeout = 300000, // User has 5 minutes to login
                }));
            AddDialog(new TextPrompt(nameof(TextPrompt)));
            AddDialog(new WaterfallDialog(nameof(WaterfallDialog), new WaterfallStep[]
            {
                PromptStepAsync,
                LoginStepAsync

            }));
            InitialDialogId = nameof(WaterfallDialog);  //InitialDialogId = $" 
           {nameof(LoginDialog)}.mainFlow";
        }

        private async Task<DialogTurnResult> PromptStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        { 
            var tokenResponse = (TokenResponse)stepContext.Result;

            if (tokenResponse != null)
            {
                return await stepContext.EndDialogAsync();
            }
            else
            {
                return  await stepContext.BeginDialogAsync(nameof(OAuthPrompt), null , cancellationToken);

            }
        }

        private async Task<DialogTurnResult> LoginStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            var tokenResponse = (TokenResponse)stepContext.Result;
            // if token exists
            if (tokenResponse != null)
            {
                // welcome user
                await stepContext.Context.SendActivityAsync(MessageFactory.Text("You are now logged 
                 in."),cancellationToken);
                // Display the name 
                await OAuthHelpers.GetUserDetail(stepContext.Context, tokenResponse);
                return await stepContext.CancelAllDialogsAsync();
            }

            await stepContext.Context.SendActivityAsync(MessageFactory.Text("Login was not successful 
            please try again."), cancellationToken);
            return await stepContext.EndDialogAsync();
        }
   }
}

现在,即使在成功登录后,用户也必须键入一些信息才能知道他们是否登录。但是,我们希望登录成功后(Azure AD),应从bot向用户推送消息,告知您您的名字就是这个,并且您已经成功登录。

我们如何实现这一目标。 ?

谢谢

0 个答案:

没有答案