【鸿蒙二开】WPS registerApp 注册门禁与 1013 排查
鸿蒙应用接入 WPS Open SDK 后,registerApp 是文档打开链路的首要门禁。注册回调没有返回 ResultCode.OK 时,sendRequest 不具备执行条件,常见表现就是 Promise 直接抛异常。社区里遇到“文档打不开”时,建议先看注册结果,再看文件路径、编辑模式和水印参数,避免把初始化问题误判成文档参数问题。
一、注册完成才算 SDK 就绪
WPSApi.registerApp(appKey, appSecret, callback) 使用 WPS 签发的接入凭据,在本地完成应用资格校验。凭据与申请时的 Bundle 包名绑定,调试包和正式包的包名不同,就需要分别确认是否覆盖。注册成功后再构造 OpenFileRequest,顺序不要反:
HAR → registerApp → ResultCode.OK → OpenFileRequest → sendRequest页面可以把“WPS 初始化中”和“文档打开失败”做成两个状态。前者等待注册完成,后者才去检查沙箱路径和文档能力。
二、最小注册代码
不要在每次点击“打开”时重新注册。用一个共享 Promise 合并并发调用,失败后再允许重试:
import { WPSApi, Result, ResultCode } from '@wps/wps_sdk';
let ready = false;
let booting: Promise<void> | null = null;
export function initWps(
appKey: string,
appSecret: string,
activationSn?: string
): Promise<void> {
if (ready) return Promise.resolve();
if (booting) return booting;
booting = new Promise<void>((resolve, reject) => {
WPSApi.registerApp(appKey, appSecret, {
onCallback: (result: Result) => {
if (result.code !== ResultCode.OK) {
booting = null;
reject(new Error(`register ${result.code}: ${result.msg ?? ''}`));
return;
}
if (activationSn) {
WPSApi.setWpsFileToken(activationSn);
}
ready = true;
resolve();
},
});
});
return booting;
}日志里记录 code 和 msg 即可,不要打印完整 appSecret。打开侧先等待 initWps(),再执行 sendRequest;未就绪时不要并发发起多个文档请求。
三、两种形态的序列号差异
项目 | 需要产品授权的交付 | 轻量打开交付 |
registerApp | 必须 | 必须 |
setWpsFileToken | 注册成功后设置 | 不需要 |
OpenFileRequest | 正常构造 | 正常构造 |
需要激活序列号时,推荐在注册成功回调中调用 WPSApi.setWpsFileToken(token),一次设置后对后续请求生效。不要在 OpenFileRequest.wpsToken 上重复赋值。全仓检索旧写法,可以避免两处配置同时存在导致排查困难。
四、1013 先对包名,不要先改参数
1013 对应 ERROR_CODE_AUTH_FAILURE,含义是接入凭据校验失败。遇到它时,建议先停下来完成这张对照表:
检查项 | 记录内容 |
运行时 Bundle | 通过 bundleManager 打印真实包名 |
申请包名 | 申请凭据时提交的名称 |
HAR 批次 | 当前依赖文件名与交付日期 |
注册结果 | code 与 msg |
凭据状态 | 是否成对、是否过期、是否更换过包名 |
如果是 key 或 secret 为空,通常更接近 ResultCode.ERROR;1013 则优先排查身份不一致。此时继续调整水印、修订或回传参数,通常不会改善结果。建议先做一次最小验证:注册成功加只读打开,通过后再逐项恢复文档能力。
五、联调清单
冷启动确认 registerApp 返回 ResultCode.OK。
确认当前包名与申请凭据时的包名一致。
需要序列号的交付,在成功回调中完成 setWpsFileToken。
清理 OpenFileRequest.wpsToken 的重复写法。
先用沙箱文件验证只读打开,再开启可编辑模式。
更换 HAR 或包名后,从注册环节重新回归。
把注册收成应用级门禁后,页面只关心“是否就绪”,文档 helper 只关心“如何打开”,1013 和未注册异常就能分别定位。对于鸿蒙 WPS 二开项目,这比在每个业务页复制一份注册代码更稳定,也更容易在 SDK 升级时完成回归。
官方对接文档:https://365.kdocs.cn/l/clQl5cek2NoT
技术交流 QQ 群:628436767 · 对接咨询:m_open_sdk@wps.cn