Android 不允许使用OpenID连接重定向加载本地资源

Android 不允许使用OpenID连接重定向加载本地资源,android,cordova,oauth-2.0,openid-connect,Android,Cordova,Oauth 2.0,Openid Connect,我遇到了一个不允许加载本地资源的:file:///android_asset/www/index.html?code=[code]&state=[state]当使用OpenID Connect标准的身份验证API试图重定向到我的本地Android应用程序时 当我启动我的应用程序时,如果我还没有连接,则会重定向到一个身份验证API,该API会请求用户凭据。然后,如果凭据良好,API将执行另一个重定向到第一个重定向中传递的redirectUri(作为查询参数)。此重定向URI是上一个file:///

我遇到了一个不允许加载本地资源的
:file:///android_asset/www/index.html?code=[code]&state=[state]
当使用OpenID Connect标准的身份验证API试图重定向到我的本地Android应用程序时

当我启动我的应用程序时,如果我还没有连接,则会重定向到一个身份验证API,该API会请求用户凭据。然后,如果凭据良好,API将执行另一个重定向到第一个重定向中传递的
redirectUri
(作为查询参数)。此
重定向URI
是上一个
file:///android_asset/www/index.html


我不知道如何配置我的应用程序/手机,使远程应用程序(身份验证API)在成功身份验证后重定向到我的应用程序。

有几个选项可用于完成此操作。查看中建议的,更具体地说是假设外部用户代理的

外部用户代理-本机应用程序可以使用(1)重定向URI捕获来自授权服务器的响应,该URI带有在操作系统中注册的方案,以调用客户端作为处理程序,(2)手动复制和粘贴凭据,(3)运行本地web服务器,(4)安装用户代理扩展,或通过(5)提供重定向URI,标识客户端控制下的服务器托管资源,从而使响应可供本机应用程序使用

选项1:

您可以使用Android应用程序注册的自定义方案配置重定向,这样,当外部用户代理(浏览器)接收到指示重定向到您的方案的响应时,您的应用程序将被调用。考虑到有一些Android应用程序,这个方案应该是非常独特的。建议对您拥有的域使用反向域名符号,例如,如果您拥有“app.example.com”,则方案可能是“com.example.app”

选项2:

您重定向到一个只显示一个漂亮页面和代码的地方,并要求用户在您的应用程序中手动输入它

选项3:

您的应用程序启动一个本地web服务器,并将重定向配置为符合以下要求的内容
http://localhost:[端口]/
。在这里,如果多个应用程序决定使用同一个应用程序,可能会出现端口冲突问题

选项4:

通过安装用户代理扩展,您可以使用浏览器运行代码,并且可以将代码自动传送到您的应用程序,更适用于桌面场景

选项5:

您可以配置一个重定向URI,该URI指向您托管的某些服务器端代码,并且您的客户端Android应用程序可以识别这些代码,以便它可以从该URL获取代码


有关此主题的更多信息,请查看:

最后,使用
文件
URL方案将不是一个选项。此外,如果您不想在服务器端执行需要一些服务器逻辑的选项,那么您可以通过将某些内容编写为一个(请确保使用自定义域)来使用更少的代码行来完成相同的操作


披露:我是一名Auth0工程师。

谢谢你的快速回答!我会尽快告诉你这是否对我有效。我如何配置像“com.example.app”这样的自定义方案?因为这是一个本机/混合android应用程序,所以我没有注册域。据我所知,访问我的应用程序的唯一方法是“非选项”文件URL。这只是一种命名约定,你可以要求用你想要的名称注册一个方案。约定只是为了减少两个应用程序注册相同方案的可能性。是的,所以现在我只需要了解如何在cordova应用程序中注册URI方案。为了确保我理解了选项1:如果我在我的redirectUri参数中设置并使用新的URI方案,我的“不允许加载本地资源”将被修复?是的,当执行带有该方案的重定向时,应该调用您的应用程序。关于如何在Android+Cordova中实现这一点,我帮不了什么忙。