{"id":28591217,"url":"https://github.com/haxibiao/react-native-qq-lib","last_synced_at":"2025-07-19T09:32:41.031Z","repository":{"id":47534132,"uuid":"292493778","full_name":"haxibiao/react-native-qq-lib","owner":"haxibiao","description":"🔥  React Native bridging library that integrates QQ SDKs. QQ 登陆 分享，集成 QQ SDK ","archived":false,"fork":false,"pushed_at":"2021-11-12T04:24:14.000Z","size":4274,"stargazers_count":24,"open_issues_count":4,"forks_count":19,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-11T09:13:53.719Z","etag":null,"topics":["qq","qq-sdk","react","react-native","react-native-module","react-native-qq","share"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/react-native-qq-lib","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/haxibiao.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-09-03T07:07:24.000Z","updated_at":"2025-05-26T01:11:00.000Z","dependencies_parsed_at":"2022-09-16T01:25:14.983Z","dependency_job_id":null,"html_url":"https://github.com/haxibiao/react-native-qq-lib","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/haxibiao/react-native-qq-lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haxibiao%2Freact-native-qq-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haxibiao%2Freact-native-qq-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haxibiao%2Freact-native-qq-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haxibiao%2Freact-native-qq-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/haxibiao","download_url":"https://codeload.github.com/haxibiao/react-native-qq-lib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/haxibiao%2Freact-native-qq-lib/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265281066,"owners_count":23739860,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["qq","qq-sdk","react","react-native","react-native-module","react-native-qq","share"],"created_at":"2025-06-11T09:13:50.575Z","updated_at":"2025-07-19T09:32:40.977Z","avatar_url":"https://github.com/haxibiao.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# react-native-qq-lib\n\n[![npm version](https://badge.fury.io/js/react-native-qq-lib.svg?v=3.0.5)](https://badge.fury.io/js/react-native-qq-lib)\n\nReact Native bridging library that integrates QQ SDKs. QQ 登陆 分享，集成 QQ SDK react-native 版本需要 0.40.0 及以上\n\n## 前言\n\n首先向各位声明，本库是在 [react-native-qq](https://github.com/reactnativecn/react-native-qq) 基础上进行重写。  \n\n本身是维护给自己使用的，考虑到自身使用和其它开发者的需要，最终决定开一个新仓库，提供给新项目使用。  \n\n最后，感谢 [lvbingru](https://github.com/lvbingru)，[tdzl2003](https://github.com/tdzl2003) 和各位开发者为 react-native-qq 做出的贡献。\n\n### 集成 QQ SDK 包版本\n\n\u003e Android SDK 版本：v3.5.4.11（2021-04-27）\n\n\u003e IOS SDK 版本：v3.3.9（2020-04-27）\n\n## 如何安装\n\n### 首先安装 npm 包\n\n```bash\nyarn add github:haxibiao/react-native-qq-lib\n```\n\n或\n\n```bash\nnpm install -D github:haxibiao/react-native-qq-lib\n```\n\n然后执行\n\n```bash\ncd ios \u0026\u0026 pod install \u0026\u0026 cd ..\n```\n\n### 安装 iOS 工程\n\n在工程 plist 文件中加入 qq 白名单：(ios9 以上必须)\n请以文本方式打开 Info.plist，在其中添加\n\n```xml\n\u003ckey\u003eLSApplicationQueriesSchemes\u003c/key\u003e\n\u003carray\u003e\n    \u003c!-- QQ、Qzone URL Scheme 白名单--\u003e\n    \u003cstring\u003emqqapi\u003c/string\u003e\n    \u003cstring\u003emqq\u003c/string\u003e\n    \u003cstring\u003emqqOpensdkSSoLogin\u003c/string\u003e\n    \u003cstring\u003emqqconnect\u003c/string\u003e\n    \u003cstring\u003emqqopensdkdataline\u003c/string\u003e\n    \u003cstring\u003emqqopensdkgrouptribeshare\u003c/string\u003e\n    \u003cstring\u003emqqopensdkfriend\u003c/string\u003e\n    \u003cstring\u003emqqopensdkapi\u003c/string\u003e\n    \u003cstring\u003emqqopensdkapiV2\u003c/string\u003e\n    \u003cstring\u003emqqopensdkapiV3\u003c/string\u003e\n    \u003cstring\u003emqzoneopensdk\u003c/string\u003e\n    \u003cstring\u003ewtloginmqq\u003c/string\u003e\n    \u003cstring\u003ewtloginmqq2\u003c/string\u003e\n    \u003cstring\u003emqqwpa\u003c/string\u003e\n    \u003cstring\u003emqzone\u003c/string\u003e\n    \u003cstring\u003emqzonev2\u003c/string\u003e\n    \u003cstring\u003emqzoneshare\u003c/string\u003e\n    \u003cstring\u003ewtloginqzone\u003c/string\u003e\n    \u003cstring\u003emqzonewx\u003c/string\u003e\n    \u003cstring\u003emqzoneopensdkapiV2\u003c/string\u003e\n    \u003cstring\u003emqzoneopensdkapi19\u003c/string\u003e\n    \u003cstring\u003emqzoneopensdkapi\u003c/string\u003e\n    \u003cstring\u003emqzoneopensdk\u003c/string\u003e\n \u003c/array\u003e\n```\n\n在`Info-\u003eURL Types` 中增加 QQ 的 scheme： `Identifier` 设置为`qq`, `URL Schemes` 设置为你注册的 QQ 开发者账号中的 APPID，需要加前缀`tencent`，例如`tencent1104903684`\n\n在你工程的`AppDelegate.m`文件中添加如下代码：\n\n```\n#import \u003cTencentOpenAPI/TencentOAuth.h\u003e\n#import \u003cTencentOpenAPI/QQApiInterface.h\u003e\n#import \u003cTencentOpenAPI/QQApiInterfaceObject.h\u003e\n\n\n- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {\n  if ([TencentOAuth CanHandleOpenURL:url]) {\n    return [TencentOAuth HandleOpenURL:url];\n  }\n  return  YES;\n}\n\n- (BOOL)application:(UIApplication *)application\n  continueUserActivity:(NSUserActivity *)userActivity\n  restorationHandler:(void(^)(NSArray\u003cid\u003cUIUserActivityRestoring\u003e\u003e * __nullable\n  restorableObjects))restorationHandler {\n  // 触发回调方法\n  [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];\n  NSURL *url = userActivity.webpageURL;\n  if (url \u0026\u0026 [TencentOAuth CanHandleUniversalLink:url]) {\n    return [TencentOAuth HandleUniversalLink:url];\n  }\n  return YES;\n}\n\n```\n\n### 安装 Android 工程\n\n在`android/app/build.gradle`里，defaultConfig 栏目下添加如下代码：\n\n```\nmanifestPlaceholders = [\n    QQ_APPID: \"\u003c平台申请的APPID\u003e\"\n]\n```\n\n以后如果需要修改 APPID，只需要修改此一处。\n\n## 如何使用\n\n### 引入包\n\n```\nimport * as QQAPI from 'react-native-qq-lib';\n```\n\n### API\n\n#### QQAPI.init()\n\n初始化，调用其他api时请先调用该api（3.1.0以前版本无需调用此方法,会自动初始化）\n\n\n#### QQAPI.login([scopes])\n\n- scopes: 登录所申请的权限，默认为 get_simple_userinfo。 需要多个权限时，以逗号分隔。\n\n调用 QQ 登录，可能会跳转到 QQ 应用或者打开一个网页浏览器以供用户登录。在本次 login 返回前，所有接下来的 login 调用都会直接失败。\n\n返回一个`Promise`对象。成功时的回调为一个类似这样的对象：\n\n```javascript\n{\n\t\"access_token\": \"CAF0085A2AB8FDE7903C97F4792ECBC3\",\n\t\"openid\": \"0E00BA738F6BB55731A5BBC59746E88D\"\n\t\"expires_in\": \"1458208143094.6\"\n\t\"oauth_consumer_key\": \"12345\"\n}\n```\n\n#### QQAPI.shareToQQ(data)\n\n分享到 QQ 好友，参数同 QQAPI.shareToQzone，返回一个`Promise`对象\n\n#### QQAPI.shareToQzone(data)\n\n分享到 QZone，参数为一个 object，可以有如下的形式：\n\n```javascript\n// 分享图文消息\n{\n\ttype: 'news',\n\ttitle: 分享标题,\n\tdescription: 描述,\n\twebpageUrl: 网页地址,\n\timageUrl: 远程图片地址,\n}\n\n// 分享文本消息\n{\n\ttype: 'text',\n\ttext: 分享内容,\n}\n\n// 分享图片\n// By：这里的 imageUrl 和 imageLocalUrl 都要传而且保持一致（别问我为啥埋这个坑，问就是腾讯的 SDK 这样搞的）\n// 支持的路径如：  file://      content://     /data/user/0/com.xxxxx/cache/\n{\n    type: 'image',\n    imageUrl: 图片路径,\n    imageLocalUrl: 图片路径,\n}\n\n\n// 其余格式尚未实现。\n```\n\n图片路径不支持 http 和 https 网络地址（网络地址的先自己下载图片，这里推荐[rn-fetch-blob](https://github.com/joltup/rn-fetch-blob#readme)库）。\n\n```\nimport RNFetchBlob from 'rn-fetch-blob';\n\n\nconst _image = 图片地址或路径;\n\nif (RegExp(/http:\\/\\//).exec(_image) || RegExp(/https:\\/\\//).exec(_image)) {\n  // 判断是网络地址的话先下载图片，然后再分享图片\n\n  RNFetchBlob.config({\n    fileCache: true,\n    appendExt: \"png\",\n  })\n    .fetch(\"GET\", _image)\n    .then((res) =\u003e {\n      const qq = QQAPI.shareToQzone({\n        type: \"image\",\n        imageUrl: res.path(),\n        imageLocalUrl: res.path(),\n      });\n      qq.then(() =\u003e {\n        __onSucceed();\n      }).catch(() =\u003e {\n      });\n    })\n    .catch((error) =\u003e {\n    });\n} else {\n  const qq = QQAPI.shareToQzone({\n    type: \"image\",\n    imageUrl: _image,\n    imageLocalUrl: _image,\n  });\n  qq.then(() =\u003e {\n  }).catch(() =\u003e {\n  });\n}\n\n```\n\n\n## 常见问题\n\n#### Android: 调用 QQAPI.login()没有反应\n\n通常出现这个原因是因为 Manifest 没有配置好，检查 Manifest 中有关 Activity 的配置。\n\n#### Android: 已经成功激活 QQ 登录，但回调没有被执行\n\n通常出现这个原因是因为 MainActivity.java 中缺少 onActivityResult 的调用。\n\n#### Android: 应用商店检测到未授权前获取隐私信息\n\n出现这个原因是因为sdk在同意隐私政策之前就自动初始化了，目前3.1.0版本已将初始化api暴露，取消了自动初始化，可在RN端自由调整初始化时机。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaxibiao%2Freact-native-qq-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhaxibiao%2Freact-native-qq-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhaxibiao%2Freact-native-qq-lib/lists"}