【发布时间】:2019-06-01 01:53:25
【问题描述】:
在使用带有 OAuthPrompt(带 ADB2C 的通用 Oauth2)和瀑布对话框的可信来源时,我似乎遇到了问题。第一步是确保用户通过身份验证,下一步从步骤上下文结果中收集令牌响应并继续。使用魔法代码,这一切都可以正常工作。
public async Task<DialogTurnResult> EnsureUserAuthenticated(WaterfallStepContext sc, CancellationToken cancellationToken)
{
return await sc.BeginDialogAsync(nameof(OAuthPrompt), null, cancellationToken);
}
public async Task<DialogTurnResult> AskForDateTime(WaterfallStepContext sc, CancellationToken cancellationToken)
{
var tokenResponse = sc.Result as TokenResponse;
...
}
我已在本地和 Azure 中尝试过此操作,并且在身份验证浏览器窗口关闭后,没有任何反应。您必须重新触发瀑布对话框才能获得在第二步中返回的令牌响应。
这个机器人正在使用 CDN WebChat 浮出水面。
有什么想法可能会出错吗?
【问题讨论】:
-
只是为了确认复制:这是否直接从 EnsureUserAuthenticated 到 AskForDateTime?
-
是的,应该。禁用受信任的来源时会这样做。如果我再次单击相同的自适应卡按钮以重新触发相同的流程,AskForDateTime 确实会在 EnsureUserAuthenticated 之后立即被调用 - 我猜它此时已缓存了令牌。
var steps = new WaterfallStep[] { EnsureUserAuthenticated, AskForDate, AskToProvideShowTitle, AskForShowTitle, ConfirmWithUser, FinishDialog, };
标签: .net botframework direct-line-botframework