1

我在 Visual Studio 2015 中使用 Xamarin Forms 和新的 MSAL 预览 v.1.1.0。该应用程序调用 PublicClientApplication.AcquireTokenAsync,它会在移动设备上的 Chrome 中提取登录表单。

这使我的问题类似于这个问题:New preview for MSAL login redirect for Xamarin droid failed

有两个区别。首先,我间歇性地收到一个不同的错误。查看突出显示的区别:“无法访问此站点。位于 msal[my app id]://auth/? state=... 的网页”

其次,我的登录调用了 WebApi,它将用户从 SQL 数据库迁移到 Azure B2C Active Directory。我在这部分遵循以下示例:https ://github.com/Azure-Samples/active-directory-b2c-advanced-policies/tree/master/Migration-JIT-sample 。

我注意到这通常发生在用户从我的数据库迁移到 Azure B2C 时。在这种情况下,登录会被调用两次。一次迁移用户,然后另一次登录用户。当用户未迁移时,错误似乎也间歇性发生,通常是如果我有几个小时没有尝试登录,这可能是不同的漏洞。否则,登录工作正常。此外,iOS 上不会发生此错误。这是一个仅限 Android 的错误。

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

我猜这可能是下面代码行中的一个错误,它位于 MainActivity 的 OnActivityResult 方法中。AuthenticationContinuationHelper.SetAuthenticationContinuationEventArgs(requestCode, resultCode, data);

4

1 回答 1

0

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

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

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

于 2017-08-15T20:59:52.120 回答