根据PromptBehavior.Auto
的{{3}},我理解:
如果缓存中没有令牌,但用户已知或会话 cookie在用于的Web浏览器控件中可用 互动,对话
flashes but disappears immediately
。
但是,有没有办法完全抑制这个Dialog,因为我第一次调用AcquireTokenAsync
并且如果需要时间来返回令牌,则空白对话框不会显示为闪存(如上面的文档中所示) )而是它保持整个时期,直到令牌返回。在后续调用中,它不会发生,因为我已经获取了令牌并且它存在于缓存中。
在PromptBehavior = Auto
?
请注意: PromptBehavior = Never
不是按照文档
如果您使用PromptBehavior = Never并且该令牌不存在 缓存,或者需要用UI刷新,调用AcquireTokenAsync 将失败,但AdalException类型
的例外
答案 0 :(得分:1)
您可以先致电AcquireTokenSilentAsync。
ADAL.NET中公共客户端应用程序(桌面/移动应用程序)的recommended pattern是:
try
{
result = await ac.AcquireTokenSilentAsync(resource, clientId);
}
catch (AdalException adalException)
{
if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently
|| adalException.ErrorCode == AdalError.InteractionRequired)
{
result = await ac.AcquireTokenAsync(resource, clientId,redirectUri,
new PlatformParameters(PromptBehavior.Auto));
}
}