Oauth2 授权码模式

创建客户端

创建客户端并获取ClientID、ClientSecret、redirect_uri(重定向地址) 请参考 准备工作

接口

1. 授权接口

接口地址

  • URL/api/v1/oauth2/authorize
  • 方法 :GET

接口描述

用于授权操作,验证相关参数并生成授权码,重定向回客户端。

请求参数

参数名 类型 必填 描述
response_type str 响应类型,需为 "code",表示使用 Oauth2 - CODE (授权码)模式
client_id str 用于验证令牌的客户端 ID
redirect_uri str 重定向 URI,在扳手平台应用授权填写的地址,准备工作 接口会携带授权码重定向到该地址,作用:自定义后端接口获取code,通过code在第二步骤中获取令牌(token)
state str 用于保持请求和回调的状态
username str 用户名,用于检查用户是否存在 用户已登录状态下无需传递

响应参数

无直接响应数据,会进行重定向,重定向的 URL 携带以下参数:

参数名 类型 描述
code str 生成的授权码,用于后续获取 token 等操作
state str 保持请求和回调的状态

请求示例

GET /api/v1/oauth2/authorize?response_type=code&client_id=your_client_id&redirect_uri=https://your_redirect_uri.com&state=your_state&username=your_username

响应示例

  • 成功响应 :重定向到 redirect_uri?code={code}&state={state},例如重定向到 https://your_redirect_uri.com?code=generated_code_here&state=your_state

  • 错误响应

    • response_type 不是 "code" 时,返回:

    { "detail": "未经允许的认证模式!请使用 Oauth2-CODE(授权码) 模式", "status_code": 404 }

    • client_id 对应的令牌不存在或令牌状态不为 1 时,返回:

    { "detail": "未经授权的令牌", "status_code": 400 }

    • username 对应的用户不存在时,返回:

    { "detail": "未经授权的令牌", "status_code": 400 }

2. 获取令牌接口

接口地址

  • URL/api/v1/oauth2/token
  • 方法 :POST

接口功能

  • 用于根据授权码(code)和客户端密钥(client_secret)等信息生成访问令牌(access_token)和刷新令牌(refresh_token)。

请求参数

  • grant_type(str):授权类型,目前仅支持 “authorization_code”,若不一致会返回 400 错误。
  • code(str):授权码,若不存在则返回 400 错误。
  • client_secret(str):客户端密钥,用于验证 Token 的有效性。

响应参数

  • access_token(str):访问令牌,用于用户在后续请求中进行身份验证。
  • token_type(str):令牌类型,固定值为 “cookie”。

响应示例

  • 成功响应:
{
  "access_token": "your_access_token",
  "token_type": "cookie"
}
  • 失败响应(不支持的授权类型):
{
  "detail": "不支持的授权类型"
}
  • 失败响应(无效的 code 授权码):
{
  "detail": "无效的 code 授权码"
}
  • 失败响应(Token 无效或已禁用):
{
  "detail": "Token 无效或已禁用"
}

备注

令牌获取成功之后可尝试接入

1.获取助手信息(智能体)
2.获取助手信息(技能编排)
3.获取上线应用列表
4.获取应用分类字典

3. 获取用户信息接口

接口概述

  • 接口地址/api/v1/oauth2/profile
  • 请求方法 :GET
  • 功能描述 :获取用户个人资料

请求头

  • Authorization :字符串类型,必需,格式为 Bearer <token>,用于提供访问令牌,以验证用户身份。如果未提供该请求头,或请求头不以 Bearer 开头,将返回 401 状态码的错误信息。

响应参数

  • user :用户信息对象,包含以下字段:
    • user_id :用户的唯一标识符,整数类型。
    • 其他用户相关信息字段(根据实际 User 模型的定义而定)。

响应示例

  • 正常响应(200 状态码),示例格式如下: { "code": 0, "message": "success", "data": { "user": { "user_id": 123, "username": "example_user", "other_fields": "..." } } }

错误响应

  • 如果访问令牌无效(如格式不正确、未提供等),返回 401 状态码,响应体示例: { "detail": "无效的访问令牌" }

  • 如果未找到对应的用户信息(如用户已删除或不存在),返回 404 状态码,响应体示例: { "detail": "未找到对应的用户信息" }

  • 其他异常情况,会返回 401 状态码,响应体示例: { "detail": "无法获取用户信息" }

4. 登出接口

GET /api/v1/oauth2/logout

描述: 注销当前用户会话。

请求头:

Authorization: Bearer 访问令牌。 响应:

  • 200 OK: 用户已成功登出。
  • 401 Unauthorized: 无效的访问令牌或登出失败。