我已经在Azure中创建了一个机器人,该机器人使用SignInCard
为用户提供了登录或注册为客户的选项。
这是我目前拥有的SignInCard
:
messageActivity.Attachments.Add(new SigninCard()
{
Buttons = new List<CardAction>()
{
new CardAction()
{
Title = "Log in here",
DisplayText = "Log in here",
Value = "https://login.microsoftonline.com/XXXXXXXX.onmicrosoft.com/oauth2/v2.0/authorize?p=B2C_1_SiUp&client_id=XXXXX-XXXX-XXXX-XXXX-XXXXXXXd&nonce=defaultNonce&redirect_uri=http%3A%2F%2Flocalhost%3A3980%2Fapi%2Flogin&scope=openid&response_type=id_token&prompt=login",
Text = "Sign in/Register",
Type = ActionTypes.Signin,
}
}
}.ToAttachment());
机器人会正确显示卡,当我单击它时,它会使用正确的提供程序打开浏览器,并且运行良好(我可以登录并注册)。
最后,我有一个Web API,其中一个LoginController
映射到我的返回网址(即localhost:3980 / api / login)。
要验证是否正在调用Return Url,我在LoginControl.Get
中放置了一个断点:
public class LoginController : ApiController
{
[HttpGet]
public IHttpActionResult Get()
{
return Ok(); //The breakpoint here is hit!
}
}
登录后,将在遇到断点时调用Get方法,但是...接下来是什么?我不知道从现在开始该怎么做。
我发现的唯一想法是,Azure B2C AD正在使用以下URL调用LoginController.Get
方法:
http://localhost:3980/api/login#id_token=eyJ0eXAi ...
我猜想是该URL,因为它显示在我的浏览器的地址栏中。
因此,它发送的是“ id_token”,但是在Controller.Get方法内部,我似乎无法访问它:(
什么是id_token?如何获得?
你能告诉我如何继续吗?
谢谢!