8.3. 在原生应用中发起授权请求
当原生应用需要用户授权时,它就创建一个授权请求的 URI,其中包含第 4.1 节中的授权码许可类型,以及能被原生应用接收到的重定向 URI。
原生应用授权请求的重定向 URI 的功能与网络授权请求类似。不过,原生应用的重定向 URI 不是将授权响应返回给 OAuth 客户端的服务器,而是将响应返回给应用。第 8.4 节记录了在不同平台上,向原生应用返回授权响应的几种重定向 URI。只要应用能接收到 URI,并检查其参数,任何重定向 URI 都是可行的。
在构建授权请求 URI 后,应用使用平台特定的 API,在外部用户代理中打开 URI。这一外部用户代理通常是默认浏览器,即系统中配置为处理 http 和 https 协议的 URI 的应用。不过,也可以采用另外的浏览器选择标准,或者使用其它类别的外部用户代理。
该最佳实践侧重于将浏览器作为原生应用的建议外部用户代理。不过,如果有一款外部应用代理,专为用户授权设计,并且能够像浏览器一样处理授权请求和响应,那么也可以使用它。其它的外部用户代理,例如授权服务器提供的原生应用,可能符合该最佳实践中规定的标准,包括使用相同的重定向 URI 属性,但它们的使用不在本规范的范围内。
某些平台支持一种称为“应用内浏览器标签”的浏览器功能。在该功能中,应用可以在应用环境中展示浏览器标签,无需切换应用,但仍然保留了浏览器的关键优势,例如共享认证状态和安全环境。在支持这种功能的平台上,出于可用性的考量,建议应用使用应用内浏览器标签,处理授权请求。