Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不允许Android ADAL加载本地资源_Android_Azure_Webview_Xamarin_Adal - Fatal编程技术网

不允许Android ADAL加载本地资源

不允许Android ADAL加载本地资源,android,azure,webview,xamarin,adal,Android,Azure,Webview,Xamarin,Adal,首先是一些快速信息: 应用程序正在使用Xamarin用c编写 对于身份验证,我使用Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory包版本4.0.209160138-alpha或简称ADAL 后端使用B2C运行AAD 其工作方式是azure将向用户提供一个webview,至少我怀疑这是一个webview,用户可以在其中选择其首选的登录/注册方法 一切正常,用户点击登录,ADAL从后端facebook、g+、加载身份提供者。。。

首先是一些快速信息:

应用程序正在使用Xamarin用c编写 对于身份验证,我使用Microsoft.Experimental.IdentityModel.Clients.ActiveDirectory包版本4.0.209160138-alpha或简称ADAL 后端使用B2C运行AAD 其工作方式是azure将向用户提供一个webview,至少我怀疑这是一个webview,用户可以在其中选择其首选的登录/注册方法

一切正常,用户点击登录,ADAL从后端facebook、g+、加载身份提供者。。。当您选择一个时,您将从相应的提供商处获得预期的登录屏幕

问题是,当用户实际使用其社交帐户登录时,应用程序会突然返回主屏幕。 如果我随后检查日志,我会看到以下错误:

"Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png", source: data:text/html,chromewebdata (12)
我知道这是一个安全特性,有很多方法可以解决这个问题,但由于所有内容都是在ADAL中生成的,而且由于我无法访问库的源代码来更改webview设置,所以我不得不以其他方式来完成。 就我所知,我也无法更改chromium的全局设置,所以我有点被卡住了

还有其他人有这个问题吗?或者,更好的是,知道一个变通方法吗? 也许我可以使用铬的替代品?尽管我不确定它是如何工作的,因为我不能编辑ADAL的内部工作,而且它似乎不是开源的

用于生成所有这些的代码非常简单,大部分代码是自动生成的或在ADAL内部完成的:

        public async Task<AuthenticationResult> Login(IPlatformParameters parameters, bool isSignIn)
    {
        var authContext = new AuthenticationContext(AUTHORITY_URL, new TokenCache());

        if (CORRELATION_ID != null &&
                CORRELATION_ID.Trim().Length != 0)
        {
            authContext.CorrelationId = Guid.Parse(CORRELATION_ID);
        }

        String policy = "";
        if (isSignIn)
            policy = EMAIL_SIGNIN_POLICY;
        else
            policy = EMAIL_SIGNUP_POLICY;

        return await authContext.AcquireTokenAsync(SCOPES, ADDITIONAL_SCOPES, CLIENT_ID, new Uri(REDIRECT_URL), parameters, UserIdentifier.AnyUser, EXTRA_QP, policy);            
    }
}

编辑:在旧版本的android api 15上进行了测试,它确实可以工作,因此这不是代码的逻辑。

所有版本的ADAL都是开源的。您可以在此处找到此特定版本的源代码:


所以不管出于什么奇怪的原因,安卓突然觉得这一切都很酷


我不知道为什么,但它现在起作用了。我肯定没有更改代码…

项目的命名让我很困惑。。。但这似乎是正确的,毕竟,我会看看我能做些什么。与此同时,建议仍然受到欢迎。