本指南适用于需要使用自定义登录页面(而非跳转到认证中心标准页面),并通过后端 API 直接进行用户认证的场景。
Base URL: http://localhost:8000/api/v1/simple (开发环境)
/login (账号+密码+签名) -> 获取 Ticket。/validate (Ticket+签名) -> 获取用户信息。所有接口(除部分公开接口外)都需要校验签名。
步骤:
sign 本身)。key1=value1&key2=value2... 格式。App Secret 作为密钥,对拼接字符串进行 HMAC-SHA256 计算。import hmac
import hashlib
def generate_signature(secret: str, params: dict) -> str:
data = {k: v for k, v in params.items() if k != "sign" and v is not None}
sorted_keys = sorted(data.keys())
query_string = "&".join([f"{k}={data[k]}" for k in sorted_keys])
signature = hmac.new(
secret.encode('utf-8'),
query_string.encode('utf-8'),
hashlib.sha256
).hexdigest()
return signature
获取临时票据 (Ticket)。
POST /loginapplication/jsonRequest Body:
| Field | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | 应用 ID |
| identifier | string | Yes | 用户标识(手机号、用户名或邮箱) |
| password | string | Yes | 明文密码 |
| timestamp | int | Yes | 当前时间戳 (秒) |
| sign | string | Yes | 签名 |
Response (200):
{
"ticket": "TICKET-7f8e9d0a-..."
}
解析票据获取用户信息。
POST /validateapplication/jsonRequest Body:
| Field | Type | Required | Description |
|---|---|---|---|
| app_id | string | Yes | 应用 ID |
| ticket | string | Yes | 上一步获取的票据 |
| timestamp | int | Yes | 当前时间戳 |
| sign | string | Yes | 签名 (参数变化需重新计算) |
Response (200):
{
"valid": true,
"user_id": 1001,
"mobile": "13800138000",
"mapped_key": "user_zhangsan", // 第三方映射ID
"mapped_email": "zhangsan@example.com"
}
Response (Invalid):
{ "valid": false }