harmonyos-flyverify-integretion

Interactive guide for integrating MobTech FlyVerify (秒验/妙验) into HarmonyOS NEXT projects. Use when the user wants one-click verification or one-click login in a HarmonyOS app and needs help with ohpm dependencies, build-profile.json5, module.json5 permissions, privacy timing, preVerify/verify calls, auth page theme customization, or return-code troubleshooting.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "harmonyos-flyverify-integretion" with this command: npx skills add mobsupport/harmonyos-flyverify-integretion

HarmonyOS FlyVerify 集成 Skill

适用场景

当用户提到以下任一主题时,使用本 skill:

  • HarmonyOS FlyVerify 集成
  • 鸿蒙接入秒验
  • 鸿蒙一键登录
  • 鸿蒙一键验证
  • FlyVerify HarmonyOS NEXT
  • MobTech 秒验/妙验 鸿蒙接入
  • 秒验隐私合规
  • 秒验预取号或取号失败排查
  • 秒验授权页 UI 定制

如果用户的问题明确涉及 HarmonyOS NEXT 工程、ohpm 依赖、build-profile.json5module.json5、MobTech appKey / appSecretZztSDK.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. 当前步骤结果
  2. 哪些项已自动确认
  3. 下一步唯一需要开发者回答的问题

步骤 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 模板

执行:

  1. 运行 assets/generate_excel_template.py
  2. 生成 assets/FlyVerify_HarmonyOS_Config_Template.xlsx
  3. 复制到用户项目根目录并命名为 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

类型转换规则:

  • appKeyappSecret 一律按字符串处理
  • 布尔字段统一转为 true / false
  • preVerifyTimeoutMs 统一转为整数

若校验失败:

  • 列出全部问题
  • 不修改用户项目
  • 让用户修正 Excel 后重新回复“填好了”

2-4 appKey / appSecret 硬性规则

如果 appKeyappSecret 缺失,流程必须在这里直接停止,并明确告知用户:

当前缺少 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

4-2 隐私回调位置

向用户说明

根据 MobTech 隐私合规要求和中国区 App 上架规范,使用 FlyVerify 需要在用户同意隐私政策后才能初始化 SDK。

你需要在 App 中:
1. 首次启动时展示《隐私政策》弹窗
2. 用户点击"同意"按钮后,调用隐私授权代码
3. 用户点击"不同意"则不应调用

请告知我:用户点击隐私政策"同意"按钮的回调代码在哪个文件、哪个方法中?
例如:LoginPage.ets 的 onPrivacyAgreed() 方法或者具体位置如:com/kit/app/LoginPage.ets:80

4-3 隐私授权代码

通用方案:

ZztSDK.submitPolicyGrantResult(true)

带主动控制器方案:

ZztSDK.submitPolicyGrantResult(true, controller)

执行规则:

  • 只能在用户点击“同意”后调用
  • 用户拒绝前不得调用
  • 如果用户后续要求扩展业务控制器,再结合实际依赖核验 ZztCustomController

步骤 5:插入预取号、取号与 UI 定制代码

5-1 收集业务落点

不要一次性把所有问题都抛给用户。按下面顺序逐个确认:

  1. 先确认隐私同意回调位置
  2. 再确认初始化落点
  3. 再确认预取号落点
  4. 再确认取号/一键登录落点
  5. 如果 needCustomTheme=true,最后才确认 UI 定制细节

主动询问用户时,每次只问当前一个问题。例如:

下一步需要确认预取号落点。
请告诉我:`FlyVerify.preVerify(...)` 想放在哪个页面、哪个方法中?
例如:`LoginPage.ets` 的 `aboutToAppear()`

5-2 预取号

异步方式:

let callback: OperationCallback<void> = {
  onSuccess: () => {},
  onFailure: (e) => {}
};
FlyVerify.preVerify(callback);

同步方式:

FlyVerify.preVerifySync().then(() => {
}).catch((e: VerifyException) => {
});

规则:

  • 文档明确要求:如果后续要 verify,应先调用 preVerify
  • 推荐在登录页展示前、页面 aboutToAppear() 或用户点击登录前的预热阶段调用

5-3 预取号超时

FlyVerify.setPreVerifyTimeout(timeout);

建议值:3000-5000

5-4 取号

异步方式:

let callback: OperationCallback<VerifyResult> = {
  onSuccess: (data) => {
    // data.operator 运营商名称: CUCC / CTCC / CMCC
    // data.opToken  token
    // data.token    运营商 token
  },
  onFailure: (error) => {}
};
FlyVerify.verify(uiContext, callback);

同步方式:

FlyVerify.verifySync(uiContext).then((data) => {
}).catch((e: VerifyResult) => {
});

执行规则:

  • uiContext 必须来自组件页面可用的上下文
  • 成功回调后要立刻把 opToken / token 交给业务服务端校验
  • 不把运营商 token 当成最终登录态直接落本地

5-5 授权页 UI 定制

入口:

let theme = new ThemeConfig().setNumberSize(18).setLogBtnText('本机号码一键登录');
FlyVerify.setTheme(theme);

可按需配置:

  • 状态栏:setSystemBarProperties(...)
  • 自定义组件:setLoginPageComponent(...)
  • 手机号码字号、偏移、颜色、对齐规则
  • 登录按钮文本、字号、颜色、背景色、背景图、宽高

所有 UI 定制代码都应先展示给用户确认再写入。

步骤 6:返回码排查与项目文档

完成集成后,在用户项目中生成一份 FLYVERIFY_HARMONYOS_README.md,至少包含:

  • 官方文档地址:
    • https://www.mob.com/wiki/detailed?wiki=717&id=78
    • https://www.mob.com/wiki/detailed?wiki=754&id=78
  • 已安装依赖
  • build-profile.json5 修改结果
  • module.json5 权限修改结果
  • 初始化代码插入位置
  • 隐私授权回调位置
  • 预取号 / 取号落点
  • 是否启用授权页 UI 定制
  • 服务端校验对接说明
  • 常见错误码与排查建议

至少收录以下错误码:

  • 6119108:运营商配置为空
  • 6119121:功能关闭
  • 6119000:未知运营商
  • 6119127 / 6119128 / 6119129:移动/联通/电信预取号失败
  • 6119123:预取号代码抛异常
  • 6119124:预取号超时
  • 6119170:运营商无配置
  • 6119167 / 6119168 / 6119169:移动/联通/电信取号失败
  • 6119165:取号代码抛异常
  • 6119164:取号超时
  • 6119171:取号前未调预取号
  • 6119172:调用过于频繁

默认输出风格

执行这个 skill 时,优先输出:

  1. 已确认的文档事实
  2. 待修改文件清单
  3. 拟插入的代码片段
  4. 风险和注意事项
  5. 若涉及扩展业务控制器,明确说明当前使用的类名依据

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

AppDev Skill - 通用应用软件开发工作流

通用应用软件开发完整工作流(HarmonyOS版)。支持从需求到部署的全流程开发管理。 包含:产品功能设计、代码生成、TDD开发、调试诊断、编译验证、版本管理。 适用于各类HarmonyOS应用的快速开发。 当用户需要开发HarmonyOS应用、生成代码、管理开发进度、进行TDD开发时触发。 关键词:开发应用、生...

Registry SourceRecently Updated
3850Profile unavailable
Coding

Proactive Claw Integrations

Optional network and automation helpers for Proactive Claw core: GitHub/Notion cross-skill context, team calendar awareness, daemon installer, and optional c...

Registry SourceRecently Updated
4420Profile unavailable
Coding

App Legal Pages

Generate and deploy app Privacy Policy and Terms of Service static websites from an app feature document. Use when a user provides app requirements/feature d...

Registry SourceRecently Updated
5280Profile unavailable
Coding

Project OS Organizer

Privacy-first, chat-first project manager for vibe coders. Track projects, capture updates, and resume work across local folders, Claude/Codex, and GitHub wi...

Registry SourceRecently Updated
6670Profile unavailable