鉴权
OAuth 2.0
使用 Authorization Code 流程接入用户登录与用户信息授权。
OAuth 2.0 适用于需要用户身份的接入场景。授权码必须由应用服务端换取 Token,Client Secret 不得进入浏览器或客户端。
接口地址
| 用途 | 方法 | 地址 |
|---|---|---|
| 发起授权 | GET | https://api.dibinos.cn/oauth/authorize |
| 换取或刷新 Token | POST | https://api.dibinos.cn/oauth/token |
| 获取用户信息 | GET | https://api.dibinos.cn/oauth/userinfo |
| OIDC 发现文档 | GET | https://api.dibinos.cn/oauth/.well-known/openid-configuration |
1. 发起授权
GET https://api.dibinos.cn/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile%20email&state=STATE| 参数 | 必填 | 说明 |
|---|---|---|
response_type | 是 | 固定为 code。 |
client_id | 是 | 应用 Client ID。 |
redirect_uri | 是 | 必须与应用配置一致。 |
scope | 是 | 推荐 openid profile email;需要刷新 Token 时追加 offline_access。 |
state | 是 | 随机字符串,回调后必须校验。 |
2. 处理回调
授权完成后,平台跳转到:
GET REDIRECT_URI?code=AUTH_CODE&state=STATE服务端必须先校验 state,再使用 code 换取 Token。授权码只能使用一次。
3. 换取 Token
curl -X POST https://api.dibinos.cn/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-u "CLIENT_ID:CLIENT_SECRET" \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "redirect_uri=REDIRECT_URI"成功响应包含 access_token、token_type 和 expires_in;可能包含 id_token。当授权 scope 包含 offline_access 时,还会返回 refresh_token。
4. 刷新 Token
curl -X POST https://api.dibinos.cn/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-u "CLIENT_ID:CLIENT_SECRET" \
-d "grant_type=refresh_token" \
-d "refresh_token=REFRESH_TOKEN"5. 获取用户信息
curl https://api.dibinos.cn/oauth/userinfo \
-H "Authorization: Bearer ACCESS_TOKEN"安全要求
- 必须生成并校验
state,防止跨站请求伪造。 - Client Secret 只能保存在服务端。
redirect_uri必须与授权请求和应用配置完全一致。- 只申请业务实际需要的 scope。