开发文档
OAuth2.0 授权码模式更新时间: 2024-09-26 14:32:00
一、授权码(authorization_code)获取接口
请求地址: https://account.xiaomi.com/oauth2/authorize
请求方法: GET
请求参数:
参数名称 | 必须 | 类型 | 备注 |
client_id | 是 | long | 申请应用时分配的应用 ID,可以在应用详情页获取 |
redirect_uri | 是 | string | 回调地址, 必须和申请应用是填写的一致(参数部分可不一致) |
response_type | 是 | string | 描述获取授权的方式, 这里 response_type=code |
scope | 否 | string | 开放数据接口权限 ID,可以传递多个,用空格分隔,具体值可以参考开放数据接口权限列表 |
state | 否 | string | 随机字符串,授权请求成功后原样返回,该参数用于防止 CSRF 攻击,强烈建议传递该参数 |
skip_confirm | 否 | boolean | 默认值为true,授权有效期内的用户在已登录情况下,不显示授权页面,直接通过。如果需要用户每次手动授权,设置为false |
返回值:
- 成功响应
如果授权成功,授权服务器会将用户的浏览器重定向到 redirect_uri
,并带上相关参数:
http://example.com/example?code=CODE&state=STATE
返回值说明:
参数名称 | 必须 | 类型 | 备注 |
code | 是 | string | 用来换取 access_token 的授权码,有效期为 10 分钟且只能使用一次 |
state | 否 | string | 如果请求时传递参数,会回传该参数 |
- 失败响应
如果授权失败,授权服务器会将用户的浏览器重定向到 redirect_uri
,并带上相关参数:
http://example.com/example?error=ERROR&error_description=ERROR_DESCRIPTION&state=STATE
返回值说明:
参数名称 | 必须 | 类型 | 备注 |
error | 是 | int | 错误码 |
error_description | 是 | string | 错误描述信息 |
state | 否 | string | 如果请求时传递参数,会回传该参数 |
二、获取访问令牌(access_token)
请求地址: https://account.xiaomi.com/oauth2/token
请求方法: POST/GET
编码格式: application/x-www-form-urlencoded
请求参数:
参数名称 | 必须 | 类型 | 备注 |
client_id | 是 | long | 申请应用时分配的应用 ID,可以在应用详情页获取 |
redirect_uri | 是 | string | 回调地址, 必须和申请应用是填写的一致(参数部分可不一致) |
client_secret | 是 | string | 申请应用时分配的 AppSecret |
grant_type | 是 | string | 这里 grant_type=authorization_code |
code | 是 | string | 第1小节中拿到的授权码,有效期为 10 分钟且只能使用一次 |
返回值:
- 成功响应
如果请求成功,授权服务器会返回 JSON 格式的字符串:
参数名称 | 必须 | 类型 | 备注 |
access_token | 是 | string | 访问令牌 |
expires_in | 是 | long | 访问令牌生命周期(单位:秒) |
refresh_token | 是 | string | 刷新令牌 |
scope | 是 | string | 访问令牌实际权限范围 |
mac_key | 是 | string | MAC类型访问令牌对应的加密密钥 |
mac_algorithm | 是 | string | MAC类型访问令牌对应的加密算法,目前只支持HMacSha1 |
openId | 是 | string | 用户在APP内的唯一标识 |
union_id | 是 | string | 同一用户,在同一个开发者下的不同应用中,获取到的union_id是相同的 |
返回值示例:
&&&START&&& {
"access_token": "access token value",
"expires_in": 259200,
"refresh_token": "refresh token value",
"scope": "scope value",
"token_type ": "mac",
"mac_key ": "mac key value",
"mac_algorithm": "HmacSHA1",
"openId":"2.0XXXXXXXXX",
"union_id": "union_id value"
}
注意: 前面的 &&&START&&&
可以直接去掉。
- 失败响应
如果请求失败,授权服务器会返回 JSON 格式的字符串:
参数名称 | 必须 | 类型 | 备注 |
error | 是 | int | 错误码 |
error_description | 是 | string | 错误描述信息 |
返回值示例:
&&&START&&&{
"error": "error_code",
"error_description": "错误描述"
}
注意: 前面的 &&&START&&&
可以直接去掉。
上一篇:
下一篇:
文档内容是否有帮助?