Redirect 仅使用Xamarin表单在Android上使用JIT迁移的MSAL登录失败

Redirect 仅使用Xamarin表单在Android上使用JIT迁移的MSAL登录失败,redirect,xamarin.forms,azure-ad-b2c,msal,Redirect,Xamarin.forms,Azure Ad B2c,Msal,我在Visual Studio 2015中使用Xamarin表单,并使用新的MSAL预览版v.1.1.0。该应用程序调用PublicClientApplication.AcquireTokenAsync,该应用程序在移动设备上以Chrome的形式调出登录表单 这使我的问题类似于这个问题: 有两个区别。首先,我间歇性地得到一个不同的错误。查看突出显示的差异:“无法访问此网站。msal[我的应用程序id]处的网页://auth/?状态=…” 其次,我的登录正在调用WebApi,它将用户从SQL数据库

我在Visual Studio 2015中使用Xamarin表单,并使用新的MSAL预览版v.1.1.0。该应用程序调用PublicClientApplication.AcquireTokenAsync,该应用程序在移动设备上以Chrome的形式调出登录表单

这使我的问题类似于这个问题:

有两个区别。首先,我间歇性地得到一个不同的错误。查看突出显示的差异:“无法访问此网站。msal[我的应用程序id]处的网页://auth/?
状态
=…”

其次,我的登录正在调用WebApi,它将用户从SQL数据库迁移到Azure B2C Active Directory。对于此部分,我遵循以下示例:

我注意到,当用户从我的数据库迁移到Azure B2C时,通常会发生这种情况。在这种情况下,登录人会被呼叫两次。一次迁移用户,然后另一次登录用户。当用户未迁移时,错误似乎也会间歇性地发生,通常是在我几个小时没有尝试登录的情况下,这可能是另一个错误。否则,信号就可以正常工作了。此外,此错误不会在iOS上发生。这是一个只有Android的bug

我认为Android上的intent listener无法正常工作。当我收到“无法访问此网站…”错误时,如果我从Android应用程序在Chrome中打开该网站,我将被重新定向到我的应用程序并登录。这使我认为链接是正确的,但侦听器无法工作


我猜这可能是下面代码行中的一个bug,它位于MainActivity.AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(请求代码、结果代码、数据)的OnActivityResult方法中

我想我找到了一个解决方案。我一直以多个用户的身份登录,这个问题在JIT迁移之外间歇性发生,但在JIT迁移期间始终如一。在其他论坛上,我注意到人们有用户缓存问题。因此,在登录之前,我确保从缓存中删除所有用户。

foreach (var user in App.PCA.Users)
{
     App.PCA.Remove(user);
}

PCA是PublicClientApplication的一个实例。我没有看到任何“无法访问此网站”。“此后的问题

我想我找到了解决办法。我一直以多用户身份登录,问题在JIT迁移之外断断续续地发生,但在JIT迁移过程中始终如一地发生。在其他论坛上,我注意到人们有用户缓存问题。因此,在登录之前,我确保从缓存中删除所有用户

foreach (var user in App.PCA.Users)
{
     App.PCA.Remove(user);
}

PCA是PublicClientApplication的一个实例。从那以后,我再也没有看到任何“无法访问此网站”的问题

如果可能的话,让我们试着把这些问题分解成更小的部分。如果使用内置的“注册或登录”策略,是否能够重现MSAL AcquireTokenAsync问题?(我希望我们可以将您在JIT迁移中遇到的问题分解成一个单独的问题,如果它们不相关的话)如果可能的话,让我们尝试将这些问题分解成更小的部分。如果使用内置的“注册或登录”策略,是否能够重现MSAL AcquireTokenAsync问题?(我希望我们可以将您关于JIT迁移的问题分解为一个单独的问题,如果它们是无关的)