【鸿蒙二开】WPS SDK 接入凭据申请与 registerApp
二开里「能编译进 HAR」和「能调用 sendRequest」不是一回事。不少同学把 @wps/wps_sdk 放进工程后直接打开文档,结果 Promise reject 或返回鉴权失败。根因通常是:未按官方渠道申请与包名绑定的 appKey / appSecret,或 registerApp 尚未成功。本帖按最短路径说明申请材料、注册封装和常见坑,适合准备接入或刚拿到 HAR 的鸿蒙开发者。
申请要交什么
向官方邮箱 m_open_sdk@wps.cn 申请 SDK HAR 与接入凭据时,建议写清:
应用名称、用途
Bundle 包名(与最终安装包一致)
ToB / ToC(对应 HAR,凭据不可混用)
联系人
专业版激活序列号请另行联系 WPS 商务 / 技术支持,与凭据邮件渠道不同。
怎么注册
const req = new RegisterAppRequest(ctx, APP_KEY, APP_SECRET);
const result = await WPSApi.sendRequest(req);
if (result.code !== ResultCode.OK) {
throw new Error(result.msg ?? String(result.code));
}
// ToB 通常在此 setWpsFileToken;ToC 一般不需要
if (ACTIVATION_SN) {
WPSApi.setWpsFileToken(ACTIVATION_SN);
}未注册成功就 OpenFileRequest,常见直接 reject。全局设 token,不要每次打开再传 wpsToken。工程里把注册收成 ensureRegistered,页面只 await 结果,不要各自 new 一份请求对象。
依赖侧把 HAR 放进 libs/,oh-package.json5 指向本地文件后执行 ohpm install。换 HAR 批次务必 clean,避免旧 so 让鉴权结论失真。
常见坑
调试包名 ≠ 申请单包名 → 1013
空 key/secret → 参数不完整
混用不同 HAR / 凭据批次
Release 打印 secret
把序列号和 appSecret 当成同一配置项
注册未完成就点打开 → reject,业务只写了 then 会误以为「没回调」
Preview / Release flavor 注入错文件 → 包名对、key 却对不上回执
建议把注册收到单一模块,保存 in-flight Promise,避免连点并发。打开入口内部再 await 一次注册,按钮在 ready 前保持不可用。
联调建议
冷启动连点只应注册一次;先验证注册 OK,再测只读打开,最后叠 enableEdit / 回传。换 HAR 后 clean。日志前缀建议 [WPS][auth],打 code/msg/bundleName,Release 不要打印完整 secret。
启动阶段注意竞态:注册未完成前不要亮打开按钮。调试包与上架包 Bundle 不同时,准备两套凭据,CI 打印包名做对照。限时凭据过期与包名错误都可能鉴权失败,对照申请回执区分「写错」和「过期」。水印、extraOptions、关闭回传都建立在注册成功之后,不要在鉴权未稳时叠加策略参数,否则 ERROR 很难归因。
上传重试不要覆盖注册失败;续期或换包名后优先回归「注册 → 只读打开」两条用例,再测编辑与回传。把申请材料、密钥与 HAR 批次放在一起归档,新人接手时先对清单再改代码。
小结
最终可调用态 = 匹配的 HAR + 包名绑定凭据 + 注册成功(按需 SN)。续期或换包名时优先回归注册用例,而不是先改打开参数。字段与渠道以官方对接文档为准:https://365.kdocs.cn/l/clQl5cek2NoT
申请 SDK HAR 与凭据:m_open_sdk@wps.cn(注明包名与版本需求)。
技术交流 QQ 群:628436767