Portal 便捷登录

如果不希望自行开发二维码展示和轮询页面,可以把用户跳转到 Cool Login 的便捷登录页。用户扫码成功后会自动返回你的应用,你的服务端使用返回的 ticket 查询一次现有登录状态即可取得受保护的用户标识。

1. 发起跳转

将用户跳转到:

https://cool-login.qdoc.fun/portal/login?appId=你的-App-ID&redirectUri=编码后的返回地址

例如,返回地址为 https://example.com/auth/callback?from=login 时,需要先进行 URL 编码。页面会展示 App 名称和返回域名,让用户确认登录目标。

redirectUri 建议始终显式提供。未提供时页面会尝试使用浏览器记录的来源地址,但浏览器隐私设置可能不会提供该地址。返回地址只允许使用 HTTP 或 HTTPS,生产环境应使用 HTTPS。

2. 接收登录结果

扫码成功后,页面会返回原地址并保留已有查询参数,同时增加:

参数说明
appId发起本次登录的 App ID
ticketPortal 展示二维码时使用的原登录票据

例如:

https://example.com/auth/callback?from=login&appId=cl_app_xxx&ticket=cl_xxx

3. 获取用户身份

你的服务端使用现有 HMAC 签名规则调用原有登录状态接口:

GET /api/open/login/status?ticket=cl_xxx

签名请求头中的 App ID 必须和返回参数中的 appId 一致。成功响应:

{
  "success": true,
  "data": {
    "ticket": "cl_xxx",
    "status": "success",
    "unionUserId": "cl_union_v1_xxx",
    "appUserId": "cl_app_user_v1_xxx"
  }
}

unionUserId 在当前开发者名下的全部 App 中保持一致,适合共享账号;appUserId 只在当前 App 中保持一致,适合独立账号。它们均不是微信原始 OpenID 或 UnionID。

扫码成功结果只保留 30 秒。回跳后应立即由你的服务端查询一次登录状态;不要在浏览器里生成签名或暴露 App Secret。

两种接入方式如何选择

方式适合场景你需要实现
自建扫码页需要完全控制页面布局和登录过程请求二维码、展示二维码、轮询状态
Portal 便捷登录希望快速完成接入跳转、接收原 ticket、服务端查询一次状态

两种方式共用同一个 App、套餐额度和登录统计。只有微信身份确认成功才累计月登录次数。