Adal AcquireTokenAsync 如何提前知道用户是否在缓存中

Adal AcquireTokenAsync how to know in advance if a user is in the cache

我正在 Xamarin 应用程序中使用 Adal,我想知道如何在调用 AcquireTokenAsync 之前确定用户是否已在缓存中。

我需要这个,因为当设备没有互联网并且缓存中没有用户时,我将被重定向到 Azure 登录页面,该页面将因无法访问互联网而失败。

在这种情况下,当用户在失去 Internet 访问权限之前登录时,登录将不会被重定向到 Azure 登录页面。

我想在没有网络的情况下避免丑陋的页面。

我已经试过了

AuthenticationContext ac = new AuthenticationContext("https://login.microsoftonline.com/x.onmicrosoft.com");
return ac.TokenCache.Count; 

但是在我调用 AcquireTokenAsync 之前它被设置为 0,并且在调用之后即使它不要求用户,计数现在是 1

感谢任何建议

我找到了这个例子:https://blog.xamarin.com/put-adal-xamarin-forms/

authContext.TokenCache.ReadItems().Count()

根据source code判断,它会调用正常的回调来加载数据,然后将所有项目返回给您。

您也可以尝试 AcquireTokenSilent,如果无法从缓存中获取令牌,它会抛出 AdalSilentTokenAcquisitionException