Harmonyos Flyverify Integretion — Harmonyos Flyverify 集成
v1.0.0用于将 MobTech FlyVerify(秒验/妙验)集成到 HarmonyOS NEXT 项目的交互式指南。当用户需要一键验证或一键登录时使用。
运行时依赖
安装命令
点击复制技能文档
HarmonyOS FlyVerify 集成 Skill 适用场景 当用户提到以下任一主题时,使用本 skill: HarmonyOS FlyVerify 集成 鸿蒙接入秒验 鸿蒙一键登录 鸿蒙一键验证 FlyVerify HarmonyOS NEXT MobTech 秒验/妙验 鸿蒙接入 秒验隐私合规 秒验预取号或取号失败排查 秒验授权页 UI 定制 如果用户的问题明确涉及 HarmonyOS NEXT 工程、ohpm 依赖、build-profile.json5、module.json5、MobTech appKey / appSecret、ZztSDK.init(...)、ZztSDK.submitPolicyGrantResult(...)、FlyVerify.preVerify(...)、FlyVerify.verify(...)、ThemeConfig 或错误码排查,应优先使用本 skill。
参考文档:集成指南、秒验鸿蒙端合规指南、已确认的官方信息 开发工具:DevEco Studio 集成方式:在线集成 HarmonyOS API 支持:>= 12 安装命令:ohpm install @zztsdk/zztcore、ohpm install @zztsdk/flyverify 项目级 build-profile.json5 需要:compatibleSdkVersion: "5.0.0(12)"、buildOption.strictMode.useNormalizedOHMUrl: true entry 模块 module.json5 需要的权限:ohos.permission.INTERNET、ohos.permission.GET_NETWORK_INFO 使用 SDK 前必须先初始化:ZztSDK.init(context, "您的AppKey", "您的AppSecret") 隐私授权必须在用户同意隐私政策后回传:ZztSDK.submitPolicyGrantResult(true) 或 ZztSDK.submitPolicyGrantResult(true, controller) 页面 context 获取方式:在 @Component 页面中通过 getContext(this) 获取 文档明确提示:不要在 UIAbility 中使用 this.context 作为 init / verify 的 UI 上下文,否则可能影响主题设置 预取号 API:FlyVerify.preVerify(callback)、FlyVerify.preVerifySync() 取号 API:FlyVerify.verify(uiContext, callback)、FlyVerify.verifySync(uiContext) 预取号超时设置:FlyVerify.setPreVerifyTimeout(timeout),建议值 3000-5000 毫秒 授权页 UI 定制入口:FlyVerify.setTheme(theme)、ThemeConfig 文档明确支持的授权页能力:状态栏配置、自定义组件、手机号码样式与位置、登录按钮文本、颜色、图片、宽高、勾选框、隐私协议文本和页面、弹窗模式、全屏模式适配、关闭授权页、授权页返回键监听事件 需要谨慎处理的文档歧义:扩展业务文档里存在命名不一致,集成指南使用 ZztSDK / ZztCustomController,扩展业务文档使用 MobSDK / MobCustomController 执行规则:基础集成默认以 集成指南 和 SDK API 中的 ZztSDK / FlyVerify 为准 若接入扩展业务控制器,必须先检查实际依赖导出的类型声明和工程可编译性,再决定是使用 ZztCustomController 还是 MobCustomController 不要直接照抄扩展业务文档中的类名落工程,必须二次核验
6 步交互式集成工作流 所有写文件和改文件操作前,都必须先展示计划修改内容并等待用户确认。 交互约束:为了避免在 OpenClaw 中一次性追问太多问题,执行本 skill 时必须遵守以下规则: 一次只问一个阻塞问题 如果当前问题不解决,后续步骤无法安全推进,就不要同时再问第二个问题 能从工程中自动推断的配置,先扫描再推断,不直接问用户 bundleName 优先从工程配置读取;只有在读取失败、存在多个候选值或发现冲突时才询问用户 是否代执行 ohpm install 只在以下条件都满足后再问:appKey / appSecret 已齐、工程结构已确认 如果发现某一步无需修改,直接说明“无需修改”,然后进入下一步,只问下一步唯一的阻塞问题 推荐输出顺序:当前步骤结果、哪些项已自动确认、下一步唯一需要开发者回答的问题
步骤 1:启动流程 1-1 询问项目路径:主动询问用户提供 HarmonyOS 项目根路径,例如:/Users/xxx/your-harmony-project 1-2 验证项目结构:至少检查以下文件中的一种或多种是否存在:build-profile.json5、oh-package.json5、entry/src/main/module.json5、其他模块下的 src/main/module.json5 优先识别 entry 模块的 module.json5。 如果路径不合法或不像 HarmonyOS 工程,提示:路径验证失败,未识别到有效的 HarmonyOS 工程结构。请确认项目根目录下至少存在以下文件之一:- build-profile.json5、- oh-package.json5、- entry/src/main/module.json5
步骤 2:生成并填写配置模板 2-1 生成 Excel 模板:执行:运行 assets/generate_excel_template.py 生成 assets/FlyVerify_HarmonyOS_Config_Template.xlsx,复制到用户项目根目录并命名为 FlyVerify_HarmonyOS_Config.xlsx 2-2 告知用户填写内容:明确要求用户填写:MobTech appKey、MobTech appSecret、是否需要预取号、是否需要一键验证、是否需要一键登录、是否需要授权页 UI 自定义 等待用户回复“填好了”后再继续。 2-3 校验规则:读取 FlyVerify_HarmonyOS_Config.xlsx 后,至少校验:appKey:必填,不能为空、appSecret:必填,不能为空、needPreVerify:必须可转换为 true / false、needVerify:必须可转换为 true / false、needOneClickLogin:必须可转换为 true / false、needCustomTheme:必须可转换为 true / false、preVerifyTimeoutMs:如填写,必须是整数,建议 3000-5000 类型转换规则:appKey、appSecret 一律按字符串处理、布尔字段统一转为 true / false、preVerifyTimeoutMs 统一转为整数 若校验失败:列出全部问题、不修改用户项目、让用户修正 Excel 后重新回复“填好了” 2-4 appKey / appSecret 硬性规则:如果 appKey 或 appSecret 缺失,流程必须在这里直接停止,并明确告知用户:当前缺少 MobTech 的 appKey 或 appSecret,按本 skill 规则不继续执行后续工程修改、联调或验收。请先前往 Mob 开发者后台申请并获取应用配置:https://new.dashboard.mob.com/#/summary,拿到 appKey 和 appSecret 后再继续。 停止规则:不安装依赖、不修改 build-profile.json5、不修改 module.json5、不插入初始化、隐私授权、预取号、取号或 UI 定制代码、可以保留模板填写结果和待改清单,但不得继续落地
步骤 3:完成依赖与工程配置修改 确认后再执行以下修改。 3-1 依赖安装:官方安装命令:ohpm install @zztsdk/zztcore、ohpm install @zztsdk/flyverify 如果用户希望你代执行,应先展示完整命令并说明会修改依赖文件。 3-2 build-profile.json5 修改:在项目级 build-profile.json5 中确认或补齐:{ "app": { "products": [ { "compatibleSdkVersion": "5.0.0(12)", "buildOption": { "strictMode": { "useNormalizedOHMUrl": true } } } ] } } 执行规则:只增量修改目标 product、不覆盖现有其它 buildOption、若工程已有更高兼容版本,优先保留更高版本并仅补齐 useNormalizedOHMUrl 3-3 module.json5 修改:必须优先在 entry 模块的 module.json5 中处理。 文档明确要求增加:"requestPermissions": [ { "name": "ohos.permission.INTERNET" }, { "name": "ohos.permission.GET_NETWORK_INFO" } ] 执行规则:采用增量合并、不覆盖已有 requestPermissions、不重复写入相同权限
步骤 4:插入初始化与隐私授权代码 4-1 初始化落点:初始化代码:ZztSDK.init(context, "您的AppKey", "您的AppSecret") 执行规则:context 优先来自 @Component 页面中的 getContext(this)、不在 UIAbility 中直接使用 this.context 作为页面 UI 上下文去做 verify 或主题配置、初始化务必早于 submitPolicyGrantResult(...)、preVerify(...)、verify(...) 如果工程入口无法快速确认,先扫描以下位置:entry/src/main/ets/pages/*.ets、entry/src/main/ets/entryability/EntryAbility.ets、entry/src/main/ets/app.ets