Microsoft Bot Framework,如何验证用户登录Web应用程序

时间:2017-01-16 10:30:11

标签: c# login botframework

我如何要求用户从机器人登录我的网站,以后用户要求机器人首先检查用户是否在我的网站上进行了身份验证,如果不是重定向到网络进行登录。我已经使用机器人中的登录卡进行了登录,我通过了activity.user.id,但是如果用户登录或者不登录,我也不知道如何检索信息。

ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
Activity reply = activity.CreateReply($"Well hello there. What can I do for you today?");
await connector.Conversations.ReplyToActivityAsync(reply);

var id = activity.From.Id;
reply.Attachments = new List<Attachment>();
List<CardAction> cardButtons = new List<CardAction>();
CardAction plButton = new CardAction()
{
    Value = $"http://myapp.azurewebsites.net/Account/Login?userid='{id}'",
    Type = "signin",
    Title = "Connect"
};

cardButtons.Add(plButton);
SigninCard plCard = new SigninCard("You need to authorize me", new List<CardAction>() 
        { plButton });

Attachment plAttachment = plCard.ToAttachment();
reply.Attachments.Add(plAttachment);
var replyt = await connector.Conversations.SendToConversationAsync(reply);

1 个答案:

答案 0 :(得分:4)

您可以阅读本文https://blogs.msdn.microsoft.com/tsmatsuz/2016/09/06/microsoft-bot-framework-bot-with-authentication-and-signin-login/
和示例github代码 https://github.com/tsmatsuz/AuthDemoBot

  

当您在浏览器中打开您的Web应用程序(网站)时,该页面将重定向到登录URL。   用户登录(登录成功)后,您的Web应用程序可能会获得一些经过身份验证的安全令牌。使用Bot Framework api,您的Web应用程序将给定令牌作为用户状态存储到bot状态服务中。 (此时,用户标识用于标识符。)   用户可以关闭您的Web应用程序(Web浏览器)   最后,当用户在您的机器人中输入一些聊天时,您的机器人(在服务器端)可以从机器人状态服务中检索先前的令牌。 (从现在开始,这个机器人可以使用这个检索到的令牌调用一些api。)

enter image description here

信用: Tsuyoshi Matsuzaki