跳到主要内容

单台设备Five签名验证错误黑屏

问题描述

使用 open/v3/vr/info API 获取 Five 数据后,在大部分设备上都能正常渲染,但在某一台设备上出现黑屏,设备控制台显示签名验证错误,而其他设备使用相同数据运行正常。

排查步骤

当遇到单台设备签名验证错误时,请按以下步骤排查:

1. 比较 API 中获取的 work 数据和 Five 中 load 的 work 数据

检查从 open/v3/vr/info API 获取的原始数据与传入 Five 实例的数据是否一致:

// 获取 API 数据
const apiData = await fetch('/open/v3/vr/info').then(res => res.json());
console.log('API 原始数据:', apiData);

// Five 加载的数据, 假设叫做workData
five.load(workData)
console.log('Five 拿到的数据:', workData);

// 比较关键字段
console.log('签名是否一致:', apiData.signature === workData.signature);
console.log('过期时间是否一致:', apiData.expire_at === workData.expire_at);

如果数据不一致,说明数据在传输或处理过程中被篡改,导致签名验证错误。

2. 验证 work 数据中的 expire_at 时间戳

在浏览器控制台中检查数据是否已过期:

// 检查过期时间
console.log('过期时间:', new Date(work.expire_at));
console.log('当前时间:', new Date());
console.log('是否已过期:', Date.now() > work.expire_at);

确认数据在问题设备上是否显示为已过期状态。

3. 检查并修正问题手机的系统时间设置

由于只有一台手机出现问题,而其他设备正常,通常是该设备的系统时间设置有误导致的。请按以下方式修正:

  1. 进入手机设置:打开"设置" → "日期和时间"
  2. 开启自动时间同步:启用"自动设置日期和时间"功能
  3. 检查时区:确认时区设置与当前所在地区一致
  4. 手动校正(如果自动同步不可用):手动调整为正确的当前时间

修正后重新测试应用,签名验证错误应该会解决。

相关链接