多设备扫码配对系统设计:扫码连接 + Token 分发 + 权限绑定机制 HarmonyOS 5.0.0 或以上

适配版本:HarmonyOS 5.0.0 或以上
阅读目标:实现手机通过扫码连接 TV 或其他设备,完成身份绑定、Token 授权分发与权限控制,为分布式协同通信提供安全接入入口


🧠 一、典型使用场景

场景描述
手机扫码登录 TV 控制端手机扫码 → 绑定 TV → 获取控制权限
新设备扫码加入协作白板 / 聊天室扫码加入 → 成为成员之一 → 自动同步数据
手机扫码绑定摄像头 / IoT 控制设备手机认证 → 控制权限 → 状态同步

🧩 二、扫码配对流程图

[TV 生成二维码] → 显示 token + TV ID
          ↓
[手机扫码解析] → 提交 token + TV ID 给后端/本地校验
          ↓
[验证通过] → 建立绑定关系,TV 和手机建立通信信任

📦 三、Token 生成与二维码展示(TV 端)

const token = genRandomToken()
const deviceId = getDeviceId()

const pairingInfo = JSON.stringify({ token, deviceId })
const qrData = base64Encode(pairingInfo)

// 生成二维码展示(推荐用二维码图片组件)
QRCode({ content: qrData })

📌 可限制 token 有效期 3 分钟,提升安全性


📲 四、手机扫码识别并发起绑定请求

function onScanSuccess(content: string) {
  const decoded = JSON.parse(base64Decode(content))
  const { token, deviceId } = decoded

  // 模拟后端验证逻辑或通过分布式通信广播绑定请求
  requestPairing(token, deviceId)
}

🔐 五、权限绑定机制(TV 端校验)

TV 端监听绑定请求:

kvStore.on('dataChange', SUBSCRIBE_TYPE_ALL, (change) => {
  const entry = change.insertEntries[0]
  if (entry.key.startsWith('pairing_req_')) {
    const payload = JSON.parse(entry.value.value)
    if (payload.token === currentToken) {
      allowDevice(payload.fromDeviceId)
    }
  }
})

✅ 六、配对成功后状态存储

const pairingKey = `paired_device_${deviceId}`
kvStore.put(pairingKey, {
  userId: payload.userId,
  deviceId: payload.fromDeviceId,
  pairedAt: Date.now()
})

📌 后续可用于权限校验:是否为绑定设备、是否允许发送控制指令等。


📄 七、配对状态 UI 提示(TV 和手机)

TV 端:

Text(`已绑定设备:${pairedDevices.length} 台`)

手机端:

Text('配对成功,您已获得控制权限')

🔁 八、配对过期 / 取消绑定机制

  • 绑定时存储有效时间戳 expiresAt

  • 定期清理已过期设备

  • 提供 UI 入口主动“解绑设备”按钮


✅ 九、小结

模块功能实现说明
Token 生成与展示TV 生成 token → 展示为二维码
扫码绑定请求手机扫码后解析二维码内容,提交绑定请求
权限绑定与认证TV 校验 token 与设备 ID,记录绑定状态并授权通信权限
状态持久化与安全控制存储配对状态、设置有效期、支持解绑、限制通信操作

📘 下一篇预告

第19篇|TV 控制端服务封装:统一指令解析器 + 安全权限判断 + 控制能力插件化设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值