搜索
开发文档
应用开发
快应用开发
小游戏开发
开发文档/应用开发/服务能力/小米账号服务/OAuth2.0 授权码模式
OAuth2.0 授权码模式更新时间: 2024-09-26 14:32:00

一、授权码(authorization_code)获取接口

请求地址: https://account.xiaomi.com/oauth2/authorize

请求方法: GET

请求参数:

参数名称必须类型备注
client_idlong申请应用时分配的应用 ID,可以在应用详情页获取
redirect_uristring回调地址, 必须和申请应用是填写的一致(参数部分可不一致)
response_typestring描述获取授权的方式, 这里 response_type=code
scopestring开放数据接口权限 ID,可以传递多个,用空格分隔,具体值可以参考开放数据接口权限列表
statestring随机字符串,授权请求成功后原样返回,该参数用于防止 CSRF 攻击,强烈建议传递该参数
skip_confirmboolean默认值为true,授权有效期内的用户在已登录情况下,不显示授权页面,直接通过。如果需要用户每次手动授权,设置为false

返回值:

  • 成功响应

如果授权成功,授权服务器会将用户的浏览器重定向到 redirect_uri,并带上相关参数:

http://example.com/example?code=CODE&state=STATE

返回值说明:

参数名称必须类型备注
codestring用来换取 access_token 的授权码,有效期为 10 分钟且只能使用一次
statestring如果请求时传递参数,会回传该参数
  • 失败响应

如果授权失败,授权服务器会将用户的浏览器重定向到 redirect_uri,并带上相关参数:

http://example.com/example?error=ERROR&error_description=ERROR_DESCRIPTION&state=STATE

返回值说明:

参数名称必须类型备注
errorint错误码
error_descriptionstring错误描述信息
statestring如果请求时传递参数,会回传该参数

二、获取访问令牌(access_token)

请求地址:  https://account.xiaomi.com/oauth2/token

请求方法: POST/GET

编码格式: application/x-www-form-urlencoded

请求参数:

参数名称必须类型备注
client_idlong申请应用时分配的应用 ID,可以在应用详情页获取
redirect_uristring回调地址, 必须和申请应用是填写的一致(参数部分可不一致)
client_secretstring申请应用时分配的 AppSecret
grant_typestring这里 grant_type=authorization_code
codestring第1小节中拿到的授权码,有效期为 10 分钟且只能使用一次

返回值:

  • 成功响应

如果请求成功,授权服务器会返回 JSON 格式的字符串:

参数名称必须类型备注
access_tokenstring访问令牌
expires_inlong访问令牌生命周期(单位:秒)
refresh_tokenstring刷新令牌
scopestring访问令牌实际权限范围
mac_keystringMAC类型访问令牌对应的加密密钥
mac_algorithmstringMAC类型访问令牌对应的加密算法,目前只支持HMacSha1
openIdstring用户在APP内的唯一标识
union_idstring同一用户,在同一个开发者下的不同应用中,获取到的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&&& 可以直接去掉。



上一篇:
下一篇: