当使用OpenID Connect标准的身份验证API尝试重定向到我的本地Android应用程序时,我被Not allowed to load local resource: file:///android_asset/www/index.html?code=[code]&state=[state]
困住了。
当我启动我的应用程序时,如果我尚未连接,则会对Authentication API执行重定向,该API会询问用户凭据。然后,如果凭据良好,API将执行另一次重定向到第一次重定向中传递的redirectUri
(作为查询参数)。此redirectUri
是之前的file:///android_asset/www/index.html
。
我不知道如何配置我的应用程序/手机,以便在成功验证后让远程应用程序(身份验证API)重定向到我的应用程序。
答案 0 :(得分:1)
有几种方法可以实现这一目标。查看OAuth 2.0 specification中建议的内容,更具体地说是假设外部用户代理的内容。
外部用户代理 - 本机应用程序可以使用(1)重定向URI从授权服务器捕获响应,并在操作系统中注册方案以调用客户端作为处理程序,< strong>(2)手动复制和粘贴凭据,(3)运行本地Web服务器,(4)安装用户代理扩展,或通过(5)提供重定向URI,用于标识客户端控件下的服务器托管资源,从而使响应可用于本机应用程序。
选项1:
您使用Android应用程序注册的自定义方案配置重定向,这样当外部用户代理(浏览器)收到指示重定向到您的方案的响应时,将调用您的应用程序。鉴于,那里有一些Android应用程序:),该方案应该是非常独特的。建议对您拥有的域使用反向域名表示法,例如,如果您拥有&#34; app.example.com&#34;该计划可以是&#34; com.example.app&#34;。
选项2:
您重定向到只显示包含代码的漂亮页面的某个位置,并要求用户在您的应用程序中手动输入。
选项3:
您的应用程序启动本地Web服务器,并将重定向配置为http://localhost:[port]/
行。如果多个应用程序决定使用相同的端口冲突,则可能存在端口冲突问题。
选项4:
通过安装用户代理扩展,您可以使用浏览器运行代码,并且可以自动将代码传递给您的应用程序,更多用于桌面方案。
选项5:
您配置重定向URI,该URI指向您托管的某些服务器端代码以及您的客户端Android应用程序知道的内容,以便它可以从该URL获取代码。
有关此主题的更多信息,请查看:OAuth 2.0 for Native Apps
最后请注意,使用file
URL方案不是一种选择。此外,如果您不希望在服务器上需要某些逻辑的选项上使用服务器端的完整服务器端,则可以通过编写Webtask的内容来使用更少的代码行完成相同的操作(是一定要使用自定义域名。)
披露:我是Auth0工程师。