#跟着晓明学鸿蒙# 鸿蒙Next开发中ohpm三方库使用指南之qqcommonlibhar集成示例

前言
随着鸿蒙生态蓬勃发展,各种实用的鸿蒙三方库已成为开发者高效开发的利器。它不仅能拓展应用功能边界,还能大幅提升开发效率,不管你是刚接触鸿蒙开发的小白,还是开发时长两年半的老司机,掌握这些三方库,绝对能让你在鸿蒙开发上更加方便!博主在日常的工作开发中也也是如此,今天给大家分享的是qqcommonlibhar三方库。
qqcommonLibHar(harmony-utils (API12 - 5.0.3.906)
HarmonyOS 5.0.3 Beta2 SDK,原样包含OpenHarmony SDK Ohos_sdk_public 5.0.3.131 (API Version 15 Beta2)
🏆简介
qqcommonLibHar是qq二次封装,分享,授权登录
🌞下载安装
ohpm install @zyl/qqcommonlibhar
🙏使用说明
qqSdk-鸿蒙接入二次封装-har-扫码登录、授权登录,分享
目前QQ HarmonyOS SDK v1.0.2版本已经发布,各位应用开发者可参考接入文档说明提前熟悉接入流程;
*当前包含能力:扫码登录、授权登录,其他功能正在持续迭代中,敬请期待后续版本。
首先要申请QQ的 appId
注册开发者
1.添加依赖、module.json5 配置
(1)运行
ohpm i @tencent/qq-open-sdk // 大于1.0.3
ohpm install @zyl/qqcommonlibhar
在工程级 oh-package.json5 文件中可看到新增依赖库
(2)module.json5 配置文件修改
// module.json5 的"module"节点下配置 querySchemes
"querySchemes": [
"https",
"qqopenapi"
]
// 在 Ability 的 skills 节点中配置scheme
"skills": [
{
"entities": [
"entity.system.browser"
],
"actions": [
"ohos.want.action.viewData"
],
"uris": [
{
"scheme": "qqopenapi", // 接收 QQ 回调数据
"host": "xxxxxxxxx", // 业务申请的互联 appId,如果填错会导致 QQ 无法回调
"pathRegex": "\\b(auth|share)\\b",
"linkFeature": "Login",
}
]
}
]
2.*授权登录接入*
(1)调用 IQQOpenApi.handleAuthResult()处理回调数据
// 在业务 Ability.onNewWant() 中调用(注意 IQQOpenApi 实例需要与调用 login 方法为同一实例,同时需要与 module.json5 中配置 scheme 为同一个 Ability)
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
super.onNewWant(want, launchParam);
let appid = 000000000 // 最好文件工程化引入,这儿简写
QQOpenApiHolder.getInstance(appid)?.handleResult(want)
// 使用QQOpenApiHolder来自于hmrouter-----注意注意
}
(2) 简单使用
checkQQApp 判断是否安装qq
QQIsInstall(APP_ID_QQ)
QQLoginWithCallback ,登录获取用户信息
QQLoginWithCallback传入appId,APP_KEY,reqOptions: AuthReqOptions,()=>{}返回promise
- @param appId
- @param APP_KEY
- @param {} as AuthReqOptions
- @param(可传) ()=>{} firstInterface第一个接口qqlogin完成,// 第一个接口login处理完回到自己的app,便于给loading
```const APP_ID_QQ = 000000000 const APP_KEY_QQ = "exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" // 最好文件工程化引入,这儿简写 if(QQIsInstall(APP_ID_QQ)){ QQLoginWithCallback(APP_ID_QQ,APP_KEY_QQ,{ scope: "all", useQrCode: false, networkTimeout: 5000, forceWebLogin: false } as AuthReqOptions, () => { // 第一个接口login处理完回到自己的app,便于给loading this.showLoading = true }) .then((res:QQLoginResult)=>{ if(res.code===200){ //成功,拿到数据 const json: UserInfoJson = JSON.parse(res.data as string) //登录成功调用用户数据的接口 AppStorage.setOrCreate('QQLogin', json) }else if (res.code===499){ // 用户取消 }else if (res.code===400){ // 登录失败 } }) .catch((error:QQLoginResult|Error)=>{ console.log('error',JSON.stringify(error)) }) }else { console.log('未安装QQ,打开异常') }
### QQOpenApiHolder 原生使用
```c
import { QQOpenApiHolder } from "@zyl/qqcommonlibhar"
// 如判断是否安装原生使用
const qqOpenApi: IQQOpenApi = QQOpenApiHolder.getInstance(APP_ID_QQ)
qqOpenApi.isQQInstalled()
QQShare分享
QQShare
- @param appId: number,
- @param appKey: string,
- @param sharJson: string, // 分享的数据
- @param shareType?:number, // 分享类型,默认是2 .目前只支持图文ark类型 2
- @param openId?: string, 没啥用的
目前只支持图片文字 类型为2
Button('QQShare').onClick(async () => {
QQShare(APP_ID_QQ,APP_KEY_QQ,'{"msg_style": 0, "title":"鸿蒙ARK图文", "summary":"ARK分享的内容", "brief":"互联分享", "url":"https://www.qq.com", "picture_url":"https://tangram-1251316161.file.myqcloud.com/files/20200722/796170665c821b9a1982918094aa6ba7.png"}',
).then((result:ShareResult)=>{
console.log('QQShareresult',result)
switch (result.resultType) {
case 1: {
AlertDialog.show({
message:'分享成功'
})
}
break
case 2: {
let msg: string = result.message ?? "用户取消分享"
AlertDialog.show({
message:msg
})
}
break
case 3: {
let msg: string = result.message ?? "分享失败"
AlertDialog.show({
message:msg
})
}
break
}
})
})
备注:
1、用户授权鸿蒙app登录成功后,后台会派发临时票据code(短期且仅一次有效)。
2、业务获取code后,业务需通过code+应用秘钥(只能存后台,客户端泄露风险高),在业务后台获取openid+access_token+refresh_token。具体参考:[code换access_token接口](https://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token#:~:text=Step2%EF%BC%9A%E9%80%9A%E8%BF%87Authorization Code获取Access Token)
3、refresh_token有效期大于access_token,通过刷新可获取新的access_token+refresh_token,历史票据自动失效,因此,业务需要保存、刷新使用最新票据。
更多推荐
所有评论(0)