# 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 email 邮箱

返回结果示例:

{
  "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"
}

说明:

  1. 在access_token过期前15min之前,使用refresh_token刷新时,会返回原来的access_token和refresh_token,二者的有效期不变;
  2. 在access_token过期前15min之内,使用refresh_token刷新时,会返回新的access_token和refresh_token,但是原来的access_token和refresh_token继续有效15min;
  3. 在access_token过期后,使用refresh_token刷新时,将获得新的access_token和refresh_token,同时原来的access_token和refresh_token失效;

回目录