云宝数据服务中心

第三方项目接入指南

YUNBAO GAME ACCESS

第三方项目接入云宝平台

本文档面向第三方项目 H5 与项目后端技术人员。你只需要完成网页入口配置、H5 SDK 接入、项目后端凭证校验三件事, 就可以让云宝平台用户从微信小程序内进入你的项目。

接入方式微信小程序内打开第三方 H5 网页。
登录方式平台签发短期进入凭证,项目后端校验。
身份凭据平台分配 appId 和 appSecret。
V1 范围登录授权和进入项目,不含支付与分账。

五步接入

如果你已经拥有可访问的项目 H5 和项目后端,可以按下面顺序完成最小接入。

提交项目网页地址

在云宝后台项目申请中填写项目 H5 的 HTTPS 地址和 H5 业务域名。所有项目都走网页地址,不再区分入口类型。

获取 appId 和 appSecret

项目审核通过后,项目管理员在“我的项目”中生成接入身份。appSecret 明文只显示一次,请保存在项目后端配置中。

在 H5 引入平台 SDK

H5 通过 SDK 读取 URL 中的 enterTicket,再把它提交给你自己的项目后端登录接口。

项目后端校验凭证

项目后端调用云宝平台开放接口,携带 appIdenterTicket 和请求头 x-game-app-secret

建立项目侧会话

平台校验成功后,项目后端创建自己的用户映射和项目登录态,H5 后续只使用项目侧会话访问项目接口。

前置准备

准备项要求说明
项目 H5 地址必须是 HTTPS 网页地址平台小程序会通过 web-view 打开该地址,并追加进入参数。
H5 业务域名需要提交给平台配置用于平台审核、入口校验和微信小程序业务域名配置。
项目后端必须由项目方自己部署维护平台不会接管项目玩法、项目数据、项目会话和业务接口。
服务端密钥只能保存在项目后端appSecret 不允许出现在 H5、URL、客户端包体或公开仓库。
平台用户身份只通过服务端校验结果传递。不要信任 URL 中的手机号、昵称、用户 ID 等明文参数,也不要要求平台在 URL 中追加用户资料。

进入流程

用户从云宝小程序点击进入项目后,平台会先为本次进入签发一个短期凭证。这个凭证只用于一次服务端校验。

用户点击进入平台小程序确认用户已登录、项目已上架且可进入。
平台签发凭证平台后端生成短期 enterTicket
web-view 打开 H5网页地址追加 projectIdenterTicketexpiresIn
H5 请求项目后端SDK 读取凭证,H5 提交给项目后端登录接口。
后端完成校验项目后端向平台校验成功后建立项目会话。
凭证过期、已使用或校验失败时,项目后端必须拒绝建立项目侧会话,并提示用户重新从云宝平台入口进入。

H5 SDK

SDK 的职责是帮助 H5 读取平台进入参数,并把凭证提交给项目后端。SDK 不直接校验平台用户身份,也不保存平台密钥。

TypeScript 源码 JavaScript 运行产物 类型声明文件 最小接入示例

页面会收到的参数

参数来源说明
projectId平台小程序平台内项目 ID。
enterTicket平台小程序短期进入凭证,H5 需要提交给项目后端。
expiresIn平台小程序凭证剩余有效秒数,用于前端判断是否立即进入。
source平台小程序固定来源标识,当前为 yunbao-miniapp
H5 最小接入示例
import { createYunbaoGameSdk } from './platform-game-sdk'

const sdk = createYunbaoGameSdk()
const launchParams = sdk.getLaunchParams()

if (!launchParams.enterTicket) {
  showError('请从云宝小程序入口进入项目')
} else {
  const loginResult = await fetch('/api/yunbao/login', {
    method: 'POST',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify({
      projectId: launchParams.projectId,
      enterTicket: launchParams.enterTicket,
    }),
  }).then((response) => response.json())

  saveGameSession(loginResult.projectToken)
  startGame()
}
H5 只能把 enterTicket 交给项目后端。不要在 H5 中配置 appSecret,也不要让 H5 直接调用平台校验接口。

服务端校验

项目后端是接入链路中的可信执行方。你的后端收到 H5 提交的 enterTicket 后,需要调用云宝平台校验接口。

Node.js 项目后端示例
async function verifyYunbaoTicket(enterTicket) {
  const response = await fetch('https://api.example.com/api/v1/open/h5-project-access/verify-ticket', {
    method: 'POST',
    headers: {
      'content-type': 'application/json',
      'x-game-app-secret': process.env.YUNBAO_APP_SECRET,
    },
    body: JSON.stringify({
      appId: process.env.YUNBAO_APP_ID,
      enterTicket,
    }),
  })

  const result = await response.json()

  if (!response.ok || !result.valid) {
    throw new Error(result.message || '云宝平台授权校验失败')
  }

  return result
}

校验成功后你应该做什么

建立用户映射

使用平台返回的 platformUserId 映射到项目自己的用户 ID。不要把手机号、昵称作为唯一身份依据。

创建项目侧会话

生成项目自己的登录态,例如 projectToken、服务端 session 或 HttpOnly Cookie。

进入项目业务

后续玩法、资产、地图、排行榜等接口都由项目侧会话保护,不再依赖平台进入凭证。

接口说明

平台小程序申请进入凭证

该接口由云宝平台小程序调用,第三方项目方不需要直接调用。

项目内容
路径POST /api/v1/client/h5-project-access/enter-ticket
调用方云宝平台小程序
身份平台用户登录态
响应entryUrlenterTicketexpiresIn、进入状态

项目后端校验进入凭证

项目内容
路径POST /api/v1/open/h5-project-access/verify-ticket
调用方第三方项目后端
请求头x-game-app-secret: <appSecret>
请求体{ "appId": "...", "enterTicket": "..." }
成功响应validprojectIdplatformUserIdauthTime
校验接口请求示例
curl -X POST 'https://api.example.com/api/v1/open/h5-project-access/verify-ticket' \
  -H 'content-type: application/json' \
  -H 'x-game-app-secret: YOUR_APP_SECRET' \
  -d '{
    "appId": "YOUR_APP_ID",
    "enterTicket": "ENTER_TICKET_FROM_H5"
  }'

错误处理

场景项目侧处理用户提示建议
H5 没有收到 enterTicket不请求项目登录,阻止进入项目。请从云宝小程序入口进入项目。
凭证过期拒绝建立项目会话。登录已过期,请返回云宝重新进入。
凭证已使用拒绝建立项目会话并记录日志。当前进入状态已失效,请重新进入。
服务端身份无效检查 appIdappSecret 配置。项目服务配置异常,请稍后再试。
平台服务异常返回临时失败,不创建用户和会话。服务暂不可用,请稍后重试。

安全要求

不要暴露 appSecret只允许放在项目后端环境变量或安全配置中。
不要信任前端身份H5 传来的用户资料、URL 参数都不能作为登录依据。
不要复用进入凭证进入凭证只用于一次平台授权校验。
不要记录完整凭证日志可记录状态和摘要,不记录完整 enterTicket 或密钥。
必须使用 HTTPS项目 H5、项目后端和平台接口都应走 HTTPS。
必须处理失败分支校验失败时不能进入项目,不能自动降级为游客身份。

接入检查表

检查项通过标准
项目配置后台项目已审核通过,网页地址和 H5 业务域名已配置。
接入身份已生成 appIdappSecret,并保存在项目后端。
小程序进入用户从云宝小程序点击进入后,H5 能收到 enterTicket
H5 SDKH5 能读取进入参数,并把凭证提交给项目后端。
后端校验项目后端能成功调用平台校验接口,并拿到 platformUserId
项目会话项目后端基于平台授权结果创建自己的项目侧会话。
异常验证凭证缺失、过期、重复使用、密钥错误时均不能进入项目。

架构与时序图

下面的图用于理解平台、小程序、第三方 H5、项目后端和外部服务的职责边界。正式接入时以上方接口和检查表为准。

总体架构图

进入流程时序图

附录资料

以下是平台内部沉淀的详细设计材料,第三方技术人员通常只需要阅读本文档主体;遇到边界问题时再查阅附录。