{"_id":"@cordova-ohos/cordova-plugin-qqsdk","_rev":"3-f3d67b970bcc1316202da0efcfb861e0","name":"@cordova-ohos/cordova-plugin-qqsdk","dist-tags":{"latest":"0.9.8"},"versions":{"0.9.7":{"name":"@cordova-ohos/cordova-plugin-qqsdk","version":"0.9.7","keywords":["cordova","qqsdk","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-qqsdk@0.9.7","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-qqsdk/issues"},"dist":{"shasum":"5fa5f992f5d1012b64ec22cebb142d57a2f456a3","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-qqsdk/-/cordova-plugin-qqsdk-0.9.7.tgz","fileCount":9,"integrity":"sha512-HD4j5psqqGKqB6GdltFNAS0Yf6UBypi9H2MgQDU+4Cz3WWOrNp4YE8xgdspDhj+VhJUqyJU0eQA9S6vPt6jgGA==","signatures":[{"sig":"MEYCIQCrRzljr4DiBQyWUZ4TYjx8D13fk9n11cjt5ItzoDpgQQIhAPgIvVLKoUqNj99tTqfn4qEsXCJUDCteVE1lCIWa7YuV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46782},"cordova":{"id":"cordova-plugin-qqsdk","platforms":["ohos"]},"engines":{"cordovaDependencies":{"0.9.7":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"6ea335afa3b27fc5afae0fdeec74bd26988b366a","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-qqsdk","type":"git"},"_npmVersion":"10.5.1","description":"Cordova QQ Plugin","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-qqsdk_0.9.7_1774227508761_0.27229337260295017","host":"s3://npm-registry-packages-npm-production"}},"0.9.8":{"name":"@cordova-ohos/cordova-plugin-qqsdk","version":"0.9.8","description":"Cordova QQ Plugin","cordova":{"id":"cordova-plugin-qqsdk","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-qqsdk"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk/issues"},"keywords":["cordova","qqsdk","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"0.9.8":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-qqsdk@0.9.8","gitHead":"dae5b6efc757b219990dfd8871f6e0905fe5a4b7","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-zFsZXRUfUvVXoCl0DVgIR2F5n0Hrc1Dfw5QbOwdI7Z/2rtr/0P7XvAICWvKeJcyifn2EqIFhfENsnTZ7Jxha1A==","shasum":"d22926b975a94e61591c4ef3e3b6aa500191d93b","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-qqsdk/-/cordova-plugin-qqsdk-0.9.8.tgz","fileCount":10,"unpackedSize":83681,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAlRpOyZqUfWrPXxrUiZ1eZBmqciewdoVoPhCeapTOMbAiEA91h9IXOHAUM7Nj4nlGp+iaHV5h/au9url4tIY3le6kQ="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-plugin-qqsdk_0.9.8_1785160153061_0.9735770031170874"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T00:58:28.710Z","modified":"2026-07-27T13:49:13.489Z","0.9.7":"2026-03-23T00:58:28.933Z","0.9.8":"2026-07-27T13:49:13.213Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","qqsdk","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-qqsdk"},"description":"Cordova QQ Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-plugin-qqsdk</center>\r\n\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [cordova-plugin-qqsdk@0.9.7](https://npmjs.com/package/cordova-plugin-qqsdk/v/0.9.7) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-qqsdk](#cordova-plugin-qqsdk)\r\n  - [简介](#简介)\r\n  - [功能特性](#功能特性)\r\n  - [支持平台](#支持平台)\r\n  - [前置准备](#前置准备)\r\n  - [下载安装](#下载安装)\r\n    - [前提条件](#前提条件)\r\n    - [从 npm 安装（基础安装）](#从-npm-安装基础安装)\r\n    - [从 GitCode 仓库安装（推荐）](#从-gitcode-仓库安装推荐)\r\n    - [安装后验证](#安装后验证)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证-1)\r\n    - [卸载](#卸载)\r\n  - [OHOS 配置](#ohos-配置)\r\n    - [1. 配置依赖项](#1-配置依赖项)\r\n    - [2. 配置工程级 modules.json5](#2-配置工程级-modulesjson5)\r\n    - [3. 初始化插件监听](#3-初始化插件监听)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n  - [使用示例](#使用示例)\r\n    - [1. 检查 QQ 客户端是否安装](#1-检查-qq-客户端是否安装)\r\n    - [2. 获取 QQ 登录授权（含 openid 获取）](#2-获取-qq-登录授权含-openid-获取)\r\n    - [3. 图文分享（OHOS 平台仅支持此类型）](#3-图文分享ohos-平台仅支持此类型)\r\n  - [使用说明](#使用说明)\r\n    - [1. 核心 API 说明](#1-核心-api-说明)\r\n      - [1.1 checkClientInstalled：检查 QQ 客户端是否安装](#11-checkclientinstalled检查-qq-客户端是否安装)\r\n      - [1.2 ssoLogin：QQ 登录授权](#12-ssologinqq-登录授权)\r\n      - [1.3 shareNews：图文分享](#13-sharenews图文分享)\r\n    - [2. 关键参数说明](#2-关键参数说明)\r\n    - [3. 注意事项](#3-注意事项)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\n`cordova-plugin-qqsdk` 是一款专为 Cordova/PhoneGap 应用设计的 QQ SDK 集成插件，支持 iOS、Android 和 OHOS 三平台，快速实现 QQ 登录、QQ 分享、获取用户信息等核心功能，适配 QQ 官方最新 SDK 版本，满足移动应用的社交化需求。插件封装了 QQ 官方开放平台的 iOS、Android SDK 和 OHOS，提供统一的 JavaScript API 接口。开发者无需深入原生开发即可快速集成 QQ 登录、分享到 QQ 好友/空间、获取 QQ 用户基本信息等功能，解决了 Cordova 应用接入 QQ 社交能力的繁琐问题。\r\n\r\n## 功能特性\r\n\r\n- **QQ 登录**：支持标准 QQ 登录授权流程，获取 access_token 和 openid，支持快速登录（已安装 QQ 客户端）和网页登录（未安装 QQ 客户端）\r\n\r\n- **用户信息获取**：通过授权后获取 QQ 用户昵称、头像、性别、省份等基本信息\r\n\r\n- **QQ 分享**：支持分享文本、图片、链接、音乐、视频等多种类型内容到 QQ 好友或 QQ 空间（OHOS 平台当前仅支持图文分享）\r\n\r\n- **授权管理**：支持检查 QQ 客户端安装状态、获取当前授权信息、清除本地授权缓存\r\n\r\n- **回调统一**：所有操作结果通过 Promise 和回调函数两种方式返回，适配不同编码习惯\r\n\r\n- **错误处理**：完善的错误码体系，覆盖授权失败、分享取消、客户端未安装等各类场景\r\n\r\n- **无侵入性**：插件集成后不影响原有应用逻辑，API 简洁直观，快速上手\r\n\r\n- **隐私合规**：遵循 QQ 开放平台隐私政策，授权前明确提示用户，获取信息范围可控\r\n\r\n## 支持平台\r\n\r\n- **Android**（API 级别 22 及以上）\r\n\r\n- **iOS**（iOS 11.0 及以上）\r\n\r\n- **OHOS**（5.0 及以上）\r\n\r\n## 前置准备\r\n\r\n在集成插件前，需在 QQ 开放平台完成应用注册和配置，获取必要的密钥信息，确保插件正常使用：\r\n\r\n1. 登录 [QQ 开放平台](https://open.qq.com/)，进入「管理中心」创建移动应用\r\n\r\n2. 填写应用基本信息（名称、图标、包名/Bundle ID 等），提交审核（审核通过后才能正式使用）\r\n\r\n3. 审核通过后，在应用详情页获取「APP ID」和「APP Key」（后续安装、配置需使用）\r\n\r\n4. 配置授权回调域：iOS 端为应用的 Bundle ID，Android 端为应用的包名（需与工程配置一致）\r\n\r\n注意：测试阶段可使用 QQ 开放平台的测试账号，无需等待审核通过，但正式上线前必须完成应用审核。\r\n\r\n## 下载安装\r\n\r\n通过 hcordova CLI 即可快速安装插件，支持从 npm 仓库或 GitCode 仓库获取，安装时需指定 QQ 开放平台获取的 APP ID，安装前请确保已创建 Cordova 项目。\r\n\r\n### 前提条件\r\n\r\n在安装插件前，请确保开发环境已满足以下条件：\r\n\r\n- 已安装 Node.js（v14.0.0 及以上）和 npm（v6.0.0 及以上）\r\n\r\n- 已安装 HCordova CLI（10.0.0 及以上），可通过以下命令安装：\r\n\r\n```bash\r\nnpm install -g hcordova\r\n```\r\n\r\n- 已创建 Cordova 项目（若未创建，可通过 `cordova create qqSdkApp com.example.qqsdkapp QQSdkApp` 命令创建）\r\n\r\n- 已在 QQ 开放平台完成应用注册，获取「APP ID」和「APP Key」\r\n\r\n### 从 npm 安装（基础安装）\r\n\r\n```bash\r\n# 基础安装（全平台）\r\nhcordova plugin add cordova-plugin-qqsdk --variable QQ_APP_ID=QQ_APP_ID\r\n\r\n# 指定 OHOS 安装\r\nhcordova plugin add cordova-plugin-qqsdk --variable QQ_APP_ID=QQ_APP_ID --platform ohos\r\n\r\n# 指定版本安装\r\nhcordova plugin add cordova-plugin-qqsdk@1.0.0 --variable QQ_APP_ID=QQ_APP_ID --platform ohos\r\n```\r\n\r\n### 从 GitCode 仓库安装（推荐）\r\n\r\n适用于需要获取最新稳定版的开发者，仅为 OHOS 平台安装：\r\n\r\n```bash\r\n# 仅支持 OHOS 平台\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk.git --variable QQ_APP_ID=QQ_APP_ID --platform ohos\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk.git@develop --variable QQ_APP_ID=QQ_APP_ID --platform ohos\r\n```\r\n\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否安装成功：\r\n\r\n```bash\r\n# 查看已安装的插件列表\r\ncordova plugin list\r\n\r\n# 若列表中显示 cordova-plugin-qqsdk 则安装成功\r\n```\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：~/Downloads/cordova-plugin-qqsdk）\r\n# 执行离线安装\r\nhcordova plugin add ~/Downloads/cordova-plugin-qqsdk --platform ohos\r\n```\r\n\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n### 卸载\r\n\r\n如需移除插件，进入项目根目录执行以下命令，卸载后建议重新构建项目以清理残留文件：\r\n\r\n```bash\r\n# 全平台卸载\r\nhcordova plugin remove cordova-plugin-qqsdk\r\n\r\n# 指定 OHOS 卸载\r\nhcordova plugin remove cordova-plugin-qqsdk --platform ohos\r\n```\r\n\r\n## OHOS 配置\r\n\r\nOHOS 平台集成插件后，需完成以下配置步骤，否则插件无法正常工作：\r\n\r\n### 1. 配置依赖项\r\n\r\n修改项目中的 oh-package.json5 文件，在 dependencies 中加入 QQ @tencent/qq-open-sdk 的依赖项：\r\n\r\n```json\r\n{\r\n  \"name\": \"entry\",\r\n  \"version\": \"1.0.0\",\r\n  \"description\": \"Please describe the basic information.\",\r\n  \"main\": \"\",\r\n  \"author\": \"\",\r\n  \"license\": \"\",\r\n  \"dependencies\": {\r\n     \"@tencent/qq-open-sdk\": \"^1.0.3\",\r\n     \"@cordova-ohos/ohos\": \"file:../cordova\"\r\n  }\r\n}\r\n```\r\n\r\n### 2. 配置工程级 modules.json5\r\n\r\n在工程级 modules.json5 中添加 QQ 相关 Schemes，并配置 App link（参考官方指南）：\r\n\r\n```json\r\n\"querySchemes\": [\r\n    \"https\",\r\n    \"weixin\",\r\n    \"wxopensdk\",\r\n    \"qqopenapi\", // 添加 qq 的 Schemes\r\n    \"amapuri\"\r\n],\r\n```\r\n\r\n### 3. 初始化插件监听\r\n\r\n修改项目中的 EntryAbility 的代码，添加 QQ 插件在 ArkTS 侧监听和初始化：\r\n\r\n```javascript\r\nexport default class EntryAbility extends UIAbility {\r\n   onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {\r\n      // 添加如下代码，注册 QQ 监听插件\r\n      // QQAction/QQAction，动态导入 QQ 插件\r\n      // EntryAbility QQ 插件的入口函数\r\n      // YOUR_APP_ID，在 qq 开放平台获取的 appID（替换为自身 APP ID）\r\n      PluginRegisterHandle(this, want, \"QQAction/QQAction\", \"EntryAbility\", \"YOUR_APP_ID\");\r\n      \r\n   }\r\n\r\n   onNewWant(want: Want): void {\r\n      // 添加如下代码，注册 QQ 监听插件\r\n      // QQAction/QQAction，动态导入 QQ 插件\r\n      // EntryAbility QQ 插件的入口函数\r\n      // YOUR_APP_ID，在 qq 开放平台获取的 appID（替换为自身 APP ID）\r\n      PluginRegisterHandle(this, want, \"QQAction/QQAction\", \"EntryAbility\", \"YOUR_APP_ID\");\r\n   }\r\n}\r\n```\r\n\r\n## 约束与限制\r\n\r\n- 依赖插件：无强制依赖，但需在 OHOS 平台添加 @tencent/qq-open-sdk 和 @cordova-ohos/ohos 依赖\r\n\r\n- 功能限制：OHOS 平台当前仅支持 QQ 登录、图文分享功能，暂不支持 TIM 客户端、音乐、视频等分享功能\r\n\r\n- 授权限制：openid 推荐通过后台获取，前台获取方式仅适用于测试，正式环境建议部署后台接口获取\r\n\r\n- 配置限制：OHOS 平台必须完成 Schemes、依赖、EntryAbility 初始化配置，否则插件无法触发回调和功能\r\n\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio: 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n| QQ SDK | @tencent/qq-open-sdk^1.0.3 |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio: 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n| QQ SDK | @tencent/qq-open-sdk^1.0.3 |\r\n\r\n\r\n## 使用示例\r\n\r\n插件挂载在 `QQSDK` 对象上，所有 API 均支持 Promise 和回调函数两种调用方式，推荐使用 Promise 链式调用。以下为各核心功能的完整使用示例，可直接复制到项目中使用（需替换自身 APP ID、APP Key）。\r\n\r\n### 1. 检查 QQ 客户端是否安装\r\n\r\n判断设备是否安装了 QQ 客户端，用于提前提示用户安装以支持快速登录和分享（OHOS 平台仅支持 QQ 客户端检测，不支持 TIM）：\r\n\r\n```javascript\r\nfunction checkClientInstalled() {\r\n  var args = {};\r\n  args.client = QQSDK.ClientType.QQ;// 支持：QQSDK.ClientType.QQ，当前版本 OHOS 不支持：QQSDK.ClientType.TIM;\r\n  QQSDK.checkClientInstalled(function () {\r\n      document.getElementById(\"checkClientInstalled\").innerHTML = 'client is installed';\r\n  }, function () {\r\n      // 若安装的 QQ 客户端版本不支持 SSO，也会触发此失败回调\r\n      document.getElementById(\"checkClientInstalled\").innerHTML = 'client is not installed';\r\n  }, args);\r\n}\r\n```\r\n\r\n### 2. 获取 QQ 登录授权（含 openid 获取）\r\n\r\n实现 QQ 登录授权，获取 authCode，进而获取 openid（示例含前台获取方式，正式环境推荐后台获取）：\r\n\r\n```javascript\r\nfunction ssoLogin() {\r\n    var args = {};\r\n    args.client = QQSDK.ClientType.QQ;// 支持：QQSDK.ClientType.QQ，当前版本 OHOS 不支持：QQSDK.ClientType.TIM;\r\n    QQSDK.ssoLogin(function (result) {\r\n        document.getElementById(\"ssoLogin\").innerHTML = \"authCode:\" + result.authCode;\r\n        // 获取 openID，推荐后台获取，这里提供前台获取方法，Android 的 SDK 会返回 openid，OHOS 官方推荐后台获取\r\n        getOpenIdSimple(\r\n            result.authCode,\r\n            \"YOUR_APP_ID\", // 替换为自身 appID\r\n            \"YOUR_APP_KEY\" // 替换为自身 appKey，推荐保存到后台\r\n        );\r\n    }, function (failReason) {\r\n        document.getElementById(\"ssoLogin\").innerHTML = JSON.stringify(failReason);\r\n    }, args);\r\n}\r\n\r\n// 前台通过 js 获取 openId（JQuery 发送请求，实际业务根据框架调整，推荐后台获取）\r\nfunction getOpenIdSimple(authCode, appId, appKey) {\r\n    $.getJSON('https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=' + appId + '&client_secret=' + appKey + '&code=' + authCode + '&fmt=json')\r\n        .done(function(token) {\r\n            if (token.error) {\r\n                console.log('Token 错误:', token.error);\r\n                return;\r\n            }\r\n            $.getJSON('https://graph.qq.com/oauth2.0/me?access_token=' + token.access_token + '&fmt=json')\r\n                .done(function(data) {\r\n                    console.log('OpenID:', data.openid);\r\n                    console.log('Token:', token.access_token);\r\n                    openId = data.openid; // 全局保存 openid，用于后续分享等操作\r\n                })\r\n                .fail(function() {\r\n                    console.log('获取 openid 失败');\r\n                });\r\n        })\r\n        .fail(function() {\r\n            console.log('获取 token 失败');\r\n        });\r\n}\r\n```\r\n\r\n### 3. 图文分享（OHOS 平台仅支持此类型）\r\n\r\n分享图文内容到 QQ 好友（OHOS 平台当前仅支持图文分享，url、title、description、image 参数必须传入）：\r\n\r\n```javascript\r\nfunction ssoShare() {\r\n    var args = {};\r\n    args.client = QQSDK.ClientType.QQ;// QQSDK.ClientType.QQ，暂不支持 QQSDK.ClientType.TIM;\r\n    args.scene = QQSDK.Scene.QQ;// QQSDK.Scene.QQZone（QQ 空间）、QQSDK.Scene.Favorite（收藏）\r\n    args.url = 'https://cordova.apache.org'; // 分享链接（必填）\r\n    args.title = '这个是 Cordova QQ 新闻分享的标题'; // 分享标题（必填）\r\n    args.description = '这个是 Cordova QQ 新闻分享的描述'; // 分享描述（必填）\r\n    args.image = 'https://cordova.apache.org/static/img/cordova_bot.png'; // 分享图片（必填）\r\n    args.openId = openId; // 登录后获取的 openid\r\n    args.appKey = \"YOUR_APP_KEY\"; // 替换为自身 appKey，推荐保存到后台\r\n    QQSDK.shareNews(function (info) {\r\n        document.getElementById(\"ssoShare\").innerHTML = JSON.stringify(info);\r\n    }, function (failReason) {\r\n        alert(failReason);\r\n    }, args);\r\n}\r\n```\r\n\r\n## 使用说明\r\n\r\n以下为插件使用的核心说明，包括 API 详解、参数说明、注意事项等，帮助开发者快速上手并避免异常。\r\n\r\n### 1. 核心 API 说明\r\n\r\n插件挂载在全局 `QQSDK` 对象上，无需额外引入，需在 Cordova 加载完成后（`deviceready` 事件触发后）调用，所有 API 均支持回调函数调用方式，部分支持 Promise 链式调用。\r\n\r\n#### 1.1 checkClientInstalled：检查 QQ 客户端是否安装\r\n\r\n功能：判断设备是否安装了 QQ 客户端，用于提前提示用户安装，支持快速登录和分享功能。\r\n\r\n参数说明：\r\n\r\n- args（必传）：配置对象，`args.client` 指定客户端类型，OHOS 平台仅支持 `QQSDK.ClientType.QQ`，暂不支持 `QQSDK.ClientType.TIM`。\r\n\r\n- 成功回调（第一个参数）：设备已安装 QQ 客户端时触发，无返回参数。\r\n\r\n- 失败回调（第二个参数）：设备未安装 QQ 客户端，或安装的 QQ 版本不支持 SSO 授权时触发，无返回参数。\r\n\r\n#### 1.2 ssoLogin：QQ 登录授权\r\n\r\n功能：发起 QQ 登录授权，获取 authCode，用于后续获取 openid、access_token 及用户信息。\r\n\r\n参数说明：\r\n\r\n- args（必传）：配置对象，`args.client` 仅支持 `QQSDK.ClientType.QQ`（OHOS 平台）。\r\n\r\n- 成功回调（第一个参数）：授权成功时触发，返回对象包含 `authCode`（授权码）。\r\n\r\n- 失败回调（第二个参数）：授权失败、用户取消授权等场景触发，返回失败原因对象。\r\n\r\n#### 1.3 shareNews：图文分享\r\n\r\n功能：分享图文内容到 QQ 好友、QQ 空间或收藏，OHOS 平台当前仅支持此类型分享。\r\n\r\n参数说明（OHOS 平台所有参数均为必填）：\r\n\r\n- args（必传）：配置对象，包含以下属性：\r\n        \r\n\r\n    - client：客户端类型，仅支持 `QQSDK.ClientType.QQ`。\r\n\r\n    - scene：分享场景，支持 `QQSDK.Scene.QQ`（QQ 好友）、`QQSDK.Scene.QQZone`（QQ 空间）、`QQSDK.Scene.Favorite`（收藏）。\r\n\r\n    - url：分享链接，必填。\r\n\r\n    - title：分享标题，必填。\r\n\r\n    - description：分享描述，必填。\r\n\r\n    - image：分享图片链接，必填。\r\n\r\n    - openId：用户登录后获取的 openid，必填。\r\n\r\n    - appKey：QQ 开放平台获取的 APP Key，推荐保存到后台，必填。\r\n\r\n- 成功回调（第一个参数）：分享成功时触发，返回分享相关信息对象。\r\n\r\n- 失败回调（第二个参数）：分享失败、用户取消分享等场景触发，返回失败原因字符串。\r\n\r\n### 2. 关键参数说明\r\n\r\n| 参数名称 | 类型 | 说明 | 是否必填 |\r\n|---|---|---|---|\r\n| QQ_APP_ID | 字符串 | QQ 开放平台获取的应用 APP ID，安装插件时需通过 --variable 指定 | 是 |\r\n| APP Key | 字符串 | QQ 开放平台获取的应用 APP Key，用于获取 openid、access_token | 是（分享、获取 openid 时） |\r\n| openid | 字符串 | 用户 QQ 唯一标识，通过 authCode 获取，用于分享等操作 | 是（分享时） |\r\n| authCode | 字符串 | QQ 登录授权码，通过 ssoLogin 接口获取，用于兑换 access_token 和 openid | 是（获取 openid 时） |\r\n\r\n### 3. 注意事项\r\n\r\n- API 调用时机：所有 API 必须在 `deviceready` 事件触发后调用，否则会出现 QQSDK 未定义、调用失败等异常。\r\n\r\n- OHOS 配置：必须完成依赖配置、Schemes 配置、EntryAbility 初始化三步，否则插件无法触发回调，功能无法正常使用。\r\n\r\n- openid 获取：推荐通过后台接口获取，前台获取方式仅适用于测试，避免 APP Key 泄露带来的安全风险。\r\n\r\n- 参数替换：示例中的 APP ID、APP Key、分享链接、图片等需替换为自身应用信息，否则会出现授权失败、分享失败。\r\n\r\n- 功能限制：OHOS 平台当前仅支持 QQ 登录、图文分享，暂不支持 TIM 客户端、音乐、视频等分享功能。\r\n\r\n- 审核提示：正式上线前必须完成 QQ 开放平台应用审核，否则无法使用正式授权、分享功能，测试阶段可使用测试账号。\r\n\r\n- 错误排查：若出现授权失败、分享无回调，可检查 OHOS 配置是否完整、APP ID/APP Key 是否正确、QQ 客户端是否安装且版本兼容。\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-qqsdk               # [根目录] QQ SDK 插件项目根目录\r\n├── src                            # [源码目录] 存放原生平台代码\r\n│   └── main                       # [主目录] 主代码目录\r\n│       ├── cpp                    # [C++ 目录] C++ 原生代码目录\r\n│       │   └── qq                 # [C++ 模块] QQ 相关 C++ 模块文件夹\r\n│       │       ├── QQSDKPlugin.cpp # [C++ 实现] C++ 源文件，实现 QQ SDK 底层调用逻辑\r\n│       │       └── QQSDKPlugin.h   # [C++ 声明] C++ 头文件，定义 QQ 插件接口\r\n│       └── ets                    # [ArkTS 目录] ArkTS/ETS 代码目录\r\n│           └── components         # [组件目录] 存放逻辑组件\r\n│               └── QQAction       # [TS 模块] QQ 动作逻辑文件夹\r\n│                   └── QQAction.ets # [ETS 文件] 处理 QQ 操作（如登录、分享）的 ArkTS 实现\r\n├── www                            # [前端目录] 存放供 Web 端调用的 JS 接口文件\r\n│   └── qq.js                      # [JS 文件] 暴露给 Web 端的 QQ SDK 接口\r\n├── .gitignore                     # [Git 配置] 指定 Git 版本控制中需要忽略的文件和目录\r\n├── LICENSE                        # [许可证] 项目的开源协议或版权声明\r\n├── OAT.xml                        # [门禁配置] OpenHarmony 门禁配置文件\r\n├── package.json                   # [NPM 配置] Node.js 包配置文件，包含依赖和脚本信息\r\n├── plugin.xml                     # [Cordova 配置] Cordova 插件的核心配置文件\r\n└── README.md                      # [说明文件] 项目说明文档，通常包含安装和使用指南\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- OHOS Cordova：[https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk](https://gitcode.com/CPF-Cordova/cordova-plugin-qqsdk)\r\n\r\n- Android/iOS：[https://npmjs.com/cordova-plugin-qqsdk/issues](https://npmjs.com/cordova-plugin-qqsdk/issues)\r\n","readmeFilename":"README.md"}