🎬 短剧模块
版本 PanGrowth

🔐 短剧解锁记录绑定

短剧解锁权益默认与设备绑定。如果应用具备自己的登录体系,需在用户登录时将 uid 与内容 SDK 打通,确保解锁记录在不同设备间保持一致。本篇介绍如何通过 pangrowth_content 插件完成签名生成、绑定、查询与解绑操作。

接入前提

  • 已完成 GroMore 初始化并成功调用 PangrowthContent.start
  • 从穿山甲平台 → 内容输出 → 接入管理获取 server key,建议由业务服务端安全下发。
  • 建议准备服务端接口生成签名,避免 server key 暴露在客户端,本文示例仅用于调试。

调试入口

仓库中的 frontend/light_csj/lib/features/content/pages/content_home_page.dart 在「短剧解锁记录绑定」分组提供了:生成签名、绑定、查询、解绑 等按钮,可直接在真机验证流程。

基本流程

  1. 准备参数:server key、ouid(业务用户 ID)、16 位 nonce、秒级 timestamp
  2. 调用 generateDramaUnlockSign 生成签名字符串。
  3. 调用 loginDramaUnlock 绑定用户解锁记录。
  4. 通过 isDramaUnlockLogin 校验绑定结果。
  5. 用户退出登录时调用 logoutDramaUnlock 解绑。
final contentService = ContentService();

Future<void> bindUnlock(String serverKey, String ouid) async {
  final nonce = _generateNonce();
  final timestamp = DateTime.now().millisecondsSinceEpoch ~/ 1000;

  final sign = await contentService.generateDramaUnlockSign(
    serverKey: serverKey,
    nonce: nonce,
    timestamp: timestamp,
    payload: {'ouid': ouid},
  );

  final result = await contentService.loginDramaUnlock(
    serverKey: serverKey,
    nonce: nonce,
    timestamp: timestamp,
    payload: {'ouid': ouid},
  );

  final bound = await contentService.isDramaUnlockLogin();
  debugPrint('签名: $sign, 绑定结果: $result, 是否绑定成功: $bound');
}

Future<void> unbindUnlock() async {
  await contentService.logoutDramaUnlock();
}

_generateNonce() 可参考调试页实现,随机生成 16 位大小写字母与数字的组合。

参数说明

参数说明
serverKey穿山甲后台获取的密钥,仅用于生成签名,不可泄露
nonce16 位随机字符串,每次请求需唯一
timestamp秒级时间戳,建议使用当前时间
payload参与签名的扩展参数,至少包含 ouid(用户唯一标识)
params如果已有完整的签名串,可直接透传给 loginDramaUnlock

服务端可参考官方文档 解锁记录加签接口 生成 params 字符串,客户端仅负责调用绑定接口。

常见问题

  • 签名失败 (sign == null):检查 serverKey 是否正确、nonce 是否重复或为空。
  • 绑定失败loginDramaUnlock 返回的 errorCodemessage 会通过事件日志上报,可在 EventLogView 中查看。
  • 换号未解绑:务必在用户退出登录时调用 logoutDramaUnlock,否则旧账号解锁记录仍保留在 SDK。

安全建议

  • 不要在客户端硬编码 serverKey,生产环境应由服务端下发签名结果。
  • 在绑定成功后,可将 noncetimestamp 记录到服务端日志,方便定位问题。
  • 如果业务存在多端登录,需要在服务端自行处理同一账号多设备绑定的业务策略。

调试小贴士

  1. 使用仓库自带调试页绑定成功后,可在事件日志中看到 drama_unlock_flow_startdrama_unlock_flow_end 回调。
  2. 若绑定失败,关注异常码 04013(同账号绑定设备过多)等常见错误。
  3. 可以在绑定后立刻请求收藏列表或历史记录,确认解锁权益已同步到账号维度。
需要进一步协助?

与 LightCore 技术顾问沟通,获取商业化策略与集成支持。