OAuth2.0


  本文档主要介绍了小米帐号开放平台实现的验证授权流程.第三方应用可以借此实现小米帐号的登录授权,同时进一步获得小米开放平台提供的丰富功能!

1. OAuth 2.0 简介

  小米开放平台基于OAuth 2.0作为验证与授权协议.OAuth是一个开放标准协议,允许第三方应用在用户授权的情况下访问其在网站上存储的信息资源(如照片,视频,好友列表),无需将用户的账号密码告诉给第三方应用。具体的OAuth2.0协议可参考rfc6749中文版本rfc6749

2.小米帐号授权流程图

3.小米帐号授权模式

3.1 Authorization Code方式授权流程

  采用Authorization Code(授权码)获取Access Token的授权验证流程又被称为Web Server Flow,适用于所有 有Server端 的应用,如Web/Wap站点、有Server端__的手机/桌面客户端应用等。

  Authorization Code 授权分为两步,首先获取Authorization Code,然后用Code换取Access Token.其流程示意图如下,步骤(A)、(B)和(C)的直线因为通过User-Agent而被分为两部分.具体流程解释可参考FRC文档

img

1.Authorization Code只能使用一次,不可重复使用

2.Authorization Code有效时间为5分钟, 在返回Authorization Code5分钟之后失效

3.2 Implicit Grant方式授权流程

  采用Implicit Grant(隐式授权)方式获取Access Token的授权验证流程与OAuth 2.0标准的User-Agent Flow相同,适用于所有无Server端配合的应用(由于应用往往位于一个User Agent里,如浏览器里面,因此这类应用在某些平台下又被称为Client-Side Application),如手机/桌面客户端程序、浏览器插件等, 他们的一个共同特点是,应用无法妥善保管其应用密钥(App Secret Key),如果采取Authorization Code模式,则会存在泄漏其应用密钥的可能性。

  Implicit Grant 授权分为直接由客户端换取Access Token.其流程示意图如下,步骤(A)和(B)的直线因为通过User-Agent而被分为两部分.具体流程解释可参考FRC文档

AccessToken是在回调地址的Fragment(信息片断)中返回。

3.3 Refresh Token 刷新 Access Token

  对于在小米开放平台注册并申请授权权限的应用,采用Authorization Code获取Access Token, 会拿到一个有特定有效期的的Access Token和无限时长的Refresh Token请参考Access Token生命周期.如果是Access Token过期,应用就可以使用Refresh Token刷新请求以获得新的Access Token。

Refresh Token 刷新 Access Token无需要用户参与授权.

Refresh Token只能刷新一次Access Token, 每次刷新之后会返回一个新的Access Token和Refresh Token。