# Oauth2.0方式
# 目录
# 概述
请求地址信息:
测试环境地址: https://sso-test.babycare.com
正式环境地址: https://sso.babycare.com
系统异常返回格式如下:
| 类型 | 属性 | 属性说明 |
|---|---|---|
| Integer | code | 错误代码 |
| String | message | 失败原因 |
Oauth2.0异常返回格式如下:
| 类型 | 属性 | 属性说明 |
|---|---|---|
| String | error | 错误代码 |
| String | error_description | 失败原因 |
# 授权码方式
# 获取授权码
获取授权码接口,浏览器访问
请求方式: GET
接口URL: /oauth/authorize
请求参数如下:
| 类型 | 属性 | 是否必需 | 属性说明 |
|---|---|---|---|
| String | response_type | 否 | 响应类型 默认: code |
| String | client_id | 是 | 分配的客户端id |
| String | redirect_uri | 是 | 重定向地址,需要进行URL编码 |
| String | state | 否 | 状态参数,接入系统自定义,会直接返回 |
返回:重定向到redirect_uri,并将授权码拼接到redirect_uri
示例返回:https://www.a.com?code=12345a&state=abcdefg
# 获取token
根据授权码获取token接口,接入系统后端调用
请求方式: POST
请求数据类型: application/x-www-form-urlencoded
接口URL: /oauth/token
请求参数如下:
| 类型 | 属性 | 是否必需 | 属性说明 |
|---|---|---|---|
| String | grant_type | 否 | 授权类型 默认: authorization_code |
| String | client_id | 是 | 分配的客户端id |
| String | client_secret | 是 | 分配的客户端密钥 |
| String | code | 否 | 当grant_type为authorization_code时必填 |
返回结果:
| 类型 | 属性 | 属性说明 |
|---|---|---|
| String | access_token | 请求token |
| String | refresh_token | 刷新token |
| Long | expires_in | access_token有效期,单位秒 |
| String | token_type | token 类型 目前为Bearer |
返回结果示例:
{
"access_token": "e44cf8c8cf3843398a6a6e378773748c",
"expires_in": 28800,
"refresh_token": "8b1f7a0bcde14ba1ba6a2e82256e31d0",
"token_type": "Bearer"
}
# 获取用户信息
根据access_token获取用户信息
请求方式: GET
接口URL: /oauth/userinfo
请求参数如下:
| 类型 | 属性 | 是否必需 | 属性说明 |
|---|---|---|---|
| String | Authorization: Bearer {token} | 是 | 访问token(/oauth/token接口返回) |
| String | access_token | 是 | 访问token(/oauth/token接口返回) |
第一种为header传值, 第二种querystring传值, 两种方式二选一即可
返回结果:
| 类型 | 属性 | 属性说明 |
|---|---|---|
| String | userId | 用户id |
| String | username | 用户名称 |
| String | avatar | 用户头像 |
| String | jobNumber | 工号 |
| String | 邮箱 |
返回结果示例:
{
"avatar": "https://www.a.com/aaa.jpg",
"email": "12345@qq.com",
"jobNumber": "H176741",
"userId": "11287167461541",
"username": "张三"
}
# 刷新token(可选)
根据授权码获取token接口,接入系统后端调用
请求方式: POST
接口URL: /oauth/token/refresh
请求参数如下:
| 类型 | 属性 | 是否必需 | 属性说明 |
|---|---|---|---|
| String | client_id | 是 | 分配的客户端id |
| String | client_secret | 是 | 分配的客户端密钥 |
| String | refresh_token | 是 | 刷新token |
返回结果:
| 类型 | 属性 | 属性说明 |
|---|---|---|
| String | access_token | 请求token |
| String | refresh_token | 刷新token |
| Long | expires_in | access_token有效期,单位秒 |
| String | token_type | token 类型 目前为Bearer |
返回结果示例:
{
"access_token": "e44cf8c8cf3843398a6a6e378773748c",
"expires_in": 28800,
"refresh_token": "8b1f7a0bcde14ba1ba6a2e82256e31d0",
"token_type": "Bearer"
}
说明:
- 在access_token过期前15min之前,使用refresh_token刷新时,会返回原来的access_token和refresh_token,二者的有效期不变;
- 在access_token过期前15min之内,使用refresh_token刷新时,会返回新的access_token和refresh_token,但是原来的access_token和refresh_token继续有效15min;
- 在access_token过期后,使用refresh_token刷新时,将获得新的access_token和refresh_token,同时原来的access_token和refresh_token失效;