快速开始

1. 创建 App

扫码登录开发者中心,在“应用管理”创建 App。App Secret 只显示一次;丢失后只能重置。

2. 请求登录二维码

调用 POST /api/open/login/qrcode。请求头:

请求头
X-CL-App-IdApp ID
X-CL-TimestampUnix 秒,允许前后 5 分钟
X-CL-Nonce16–128 位随机字符串,10 分钟内不可重复
X-CL-SignatureHMAC-SHA256 十六进制小写签名

签名原文依次拼接并用换行分隔:HTTP 方法、路径、规范化查询串、timestamp、nonce、原始请求体 SHA-256。

成功响应同时包含 ticketqrCodeBase64expiresIn。直接把 Base64 Data URL 放到图片元素中展示。

3. 轮询结果

GET /api/open/login/status?ticket=... 使用同样的签名规则。状态为 success 时同时返回:

字段稳定范围用途
unionUserId当前开发者名下的所有 App在自己的多个 App 之间识别并共享同一用户
appUserId当前 App建立只属于当前 App 的独立用户记录
{
  "success": true,
  "data": {
    "ticket": "cl_xxx",
    "status": "success",
    "unionUserId": "cl_union_v1_xxx",
    "appUserId": "cl_app_user_v1_xxx"
  }
}

两个字段均由 Cool Login 对微信身份进行不可逆保护后生成,不是微信原始 OpenID 或 UnionID。同一微信用户登录同一开发者的不同 App 时,unionUserId 相同而 appUserId 不同。结果窗口为 30 秒,之后返回 expired

不要在浏览器里生成签名或暴露 App Secret。轮询必须由你的服务端完成。

使用托管登录页

如果不想自行展示二维码和维护轮询页面,可以使用 Portal 便捷登录。Cool Login 会完成二维码展示和扫码状态确认,再携带原 ticket 返回你的应用;你的服务端对现有状态接口查询一次即可。