C# Microsoft Bot框架,如何验证用户登录web应用程序

C# Microsoft Bot框架,如何验证用户登录web应用程序,c#,login,botframework,C#,Login,Botframework,我怎样才能要求用户从bot登录到我的网站,然后当用户要求bot首先检查用户是否在我的网站上进行了身份验证,如果不重定向到网站进行登录。我已经在bot中使用登录卡登录,并且我传递了activity.user.id,但是如果用户登录或未登录,我不知道如何检索信息 ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); Activity reply = activity.CreateReply($"W

我怎样才能要求用户从bot登录到我的网站,然后当用户要求bot首先检查用户是否在我的网站上进行了身份验证,如果不重定向到网站进行登录。我已经在bot中使用登录卡登录,并且我传递了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);
ConnectorClient connector=newconnectorclient(新Uri(activity.ServiceUrl));
Activity reply=Activity.CreateReply($“您好,我今天能为您做些什么?”;
等待连接器.Conversations.ReplyToActivityAsync(reply);
var id=activity.From.id;
reply.Attachments=新列表();
列表卡片按钮=新列表();
CardAction plButton=新的CardAction()
{
值=$”http://myapp.azurewebsites.net/Account/Login?userid=“{id}”,
Type=“signin”,
Title=“连接”
};
添加(plButton);
SigninCard plCard=新SigninCard(“您需要授权我”,新列表()
{plButton});
附件plAttachment=plCard.ToAttachment();
回复。附件。添加(拼盘);
var replyt=wait connector.Conversations.SendToConversationAsync(reply);

您可以浏览这篇文章
和示例github代码

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


Credit:Tsuyoshi Matsuzaki

我已经尝试过了,但是当我尝试使用GetPrivateConversationDataAsync获取机器人数据时,它总是返回null。请检查您实际设置令牌的位置。是PrivateConversationData/UserData吗?@Praveen,您提供的第一个链接不起作用。你能分享一下更新的链接吗?