search
开发文档
开发文档/应用开发/服务能力/小米账号服务/OAuth2.0 授权码模式
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是stringMAC类型访问令牌对应的加密密钥
mac_algorithm是stringMAC类型访问令牌对应的加密算法,目前只支持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&&& 可以直接去掉。



上一篇:OAuth2.0 协议原理
下一篇:OpenID Connect 授权码模式
文档内容是否有帮助?
有帮助
无帮助