
##HarmonyOS Next实战##三方SDK##教育##
参考资料
移动应用接入流程:
https://wiki.connect.qq.com/%e7%a7%bb%e5%8a%a8%e5%ba%94%e7%94%a8%e6%8e%a5%e5%85%a5%e6%b5%81%e7%a8%8b
HarmonyOS_SDK环境搭建:
https://wiki.connect.qq.com/harmonyos_sdk%e7%8e%af%e5%a2%83%e6%90%ad%e5%bb%ba
SDK Demo下载:
https://wiki.connect.qq.com/sdk%e4%b8%8b%e8%bd%bd
移动应用接入流程:
移动应用通过以下几个步骤,即可接入互联开放平台 https://connect.qq.com :
开发者注册 > 移动应用申请 > 移动应用开发 > 调用OpenAPI
开发说明
QQ登录功能使用国际通用的OAuth2.0协议进行验证与授权,可通过以下方式进行移动应用开发:
(1)QQ互联分别提供了iOS和Android的SDK开发包。如果手机安装了QQ,则启动手机QQ进行SSO登录。如没有安装,则通过手机系统的浏览器进行登录。登录的流程已经集成在SDK里,建议开发者使用此方法。详见:SDK下载
(2)根据QQ登录OAuth2.0协议,自主开发,此方法自定义程度较高,需要与现有系统进行整合的移动应用可选用此方法。
鸿蒙项目配置:
添加依赖,执行命令
ohpm i @tencent/qq-open-sdk运行后在工程级 oh-package.json5 文件中可看到新增依赖库
"dependencies": {
"@tencent/qq-open-sdk": "^1.0.3"
}修改模块配置:
修改entry的module.json5文件,配置skills
"skills": [
{
"entities": [
"entity.system.home",
"entity.system.browsable"
],
"actions": [
"action.system.home",
"ohos.want.action.viewData"
],
"uris": [
{
"scheme": "qqopenapi", // 接收 QQ 回调数据
"host": "xxxxxxxxx", // 业务申请的互联 appId,如果填错会导致 QQ 无法回调
"pathRegex": "\\b(auth|share)\\b",
"linkFeature": "Login",
}
]
}
]继续修改entry的module.json5文件,增加querySchemes
"querySchemes": [
"https",
"qqopenapi"
]增加SDK工具类:
添加QQOpenApiHolder
import { SdkConfig } from '@heduohao/bases'
import { IQQOpenApi, OpenApiConfig, QQOpenApiFactory } from '@tencent/qq-open-sdk'
export class QQOpenApiHolder {
private static qqOpenApi: IQQOpenApi
private constructor() {
}
public static create(): IQQOpenApi {
if (!QQOpenApiHolder.qqOpenApi) {
let openApiOption: OpenApiConfig = {
forceEnableWeb: false,
autoHandleAuthResult: true,
}
QQOpenApiHolder.qqOpenApi =
QQOpenApiFactory.createApi(SdkConfig.QQ_SDK_APP_ID, openApiOption)
}
return QQOpenApiHolder.qqOpenApi
}
public static getInstance(): IQQOpenApi {
return QQOpenApiHolder.qqOpenApi
}
}EntryAbility接入QQOpenApiHolder
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
QQOpenApiHolder.create()
}
onNewWant(want: Want, _launchParam: AbilityConstant.LaunchParam): void {
QQOpenApiHolder.getInstance()?.handleResult(want)
}原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。