单台设备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. 检查并修正问题手机的系统时间设置
由于只有一台手机出现问题,而其他设备正常,通常是该设备的系统时间设置有误导致的。请按以下方式修正:
- 进入手机设置:打开"设置" → "日期和时间"
- 开启自动时间同步:启用"自动设置日期和时间"功能
- 检查时区:确认时区设置与当前所在地区一致
- 手动校正(如果自动同步不可用):手动调整为正确的当前时间
修正后重新测试应用,签名验证错误应该会解决。