Authorization Code授权接口
1. 获取Authorization Code
请求地址: https://account.xiaomi.com/oauth2/authorize
请求方法: GET
请求参数:
名称
必须
类型
备注
client_id
是
long
开发公司申请应用时分配的APP ID
redirect_uri
是
string
开发公司授权回调地址, 开发公司必须和申请应用是填写的一致(开发公司参数部分可不一致)
response_type
是
string
开发公司描述获取授权的方式, Authorization Code方式授权, response_type=code
scope
否
string
申请scope开发公司权限所需参数,开发公司可一次申请多个scope权限,开发公司用空格分隔,scope权限列表
state
否
string
开发公司用于保持请求和回调的状态,开发公司授权请求成功后原样带回给第三方,该参数用于防止
CSRF攻击(跨站请求伪造攻击),强烈建议第三方带上该参数
skip_confirm
否
boolean
已登录用户会看到切换帐号的页面, 如果应用不需要切换帐号, 可以加上参数skip_confirm=true,
黄页应用接入请设置为true
返回值:
成功响应
如果授权成功,授权服务器会将用户的浏览器重定向到redirect_uri,并带上code,state等参数,例子如下:
http://example.com/example?code=CODE&state=STATE
返回参数说明:
名称
必须
类型
备注
code
是
string
用来换取access_token的授权码,有效期为5分钟且只能用一次
state
否
string
如果请求时传递参数,会回传该参数
失败响应
如果授权失败,授权服务器会将用户的浏览器重定向到redirect_uri,并带上error,error_description, state等参数,例子如下:
http://example.com/example?error=ERROR&error_description=ERROR_DESCRIPTION&state=STATE
返回参数说明:
名称
必须
类型
备注
error_description
是
string
错误描述信息
state
否
string
如果请求时传递参数,会回传该参数
2. 获取Access Token
请求地址: https://account.xiaomi.com/oauth2/token
请求方法: GET
请求参数:
名称
必须
类型
备注
client_id
是
long
申请应用时分配的APP ID
redirect_uri
是
string
授权回调地址, 必须和申请应用是填写的一致(参数部分可不一致)
client_secret
是
string
申请应用时分配的App Secret
grant_type
是
string
固定为authorization_code
code
是
string
第1小节中拿到的授权码
返回值:
成功响应
如果请求成功,授权服务器会返回JSON格式的字符串:
access_token: 要获取的Access Token
expires_in: Access Token的有效期,以秒为单位, 请参考Access Token生命周期
refresh_token: 用于刷新Access Token 的 Refresh Token,所有应用都会返回该参数(10年的有效期)
scope: Access Token最终的访问范围,关于权限的具体信息参考scope权限列表
mac_key: 基于http调用Open API时所需要的mac Key,其有效期与Access Token一致
mac_algorithm: 基于http调用Open API时计算参数签名时候使用的算法, 目前只支持HmacSha1
openId: 用户统一标识,可以唯一标识一个用户.网站或应用可将此ID进行存储,便于用户下次登录时辨识其身份
&&&START&&& {
"access_token": "access token value",
"expires_in": 360000,
"refresh_token": "refresh token value",
"scope": "scope value",
"token_type ": "mac",
"mac_key ": "mac key value",
"mac_algorithm": " HmacSha1",
"openId":"2.0XXXXXXXXX"
}
注意: 前面的&&&START&&&可以直接去掉, 推荐用replace("&&&START&&&", "")
失败响应
如果请求失败,授权服务器会返回JSON格式的字符串:
error:错误码,是一个int类型的数字 请参考OAuth定义的错误码
error_description:一段可读的文字,用来帮助理解和解决发生的错误
&&&START&&&{
"error": "error_code",
"error_description": "错误描述"
}
注意: 前面的&&&START&&&可以直接去掉, 推荐用replace("&&&START&&&", "")