接入指引 移动应用 鸿蒙
# 鸿蒙
更新时间:2025-01-16 14:24:26
# 一、设计目标
开放平台sdk的设计目标是:第三方应用使用开放平台sdk能够方便、快速的调起快手主app的功能页面,从而将第三方内容发布到快手平台上或者使用快手APP提供的其他开放功能。
| 开放能力 | ||
| 账号授权 | 快手主站授权 | 快手极速版授权 |
| 生产功能 | 单图发布 | 单视频发布 |
# 二、获取AppId
准备工作
- 开发者需要在快手开放平台完成注册,新建一个网站应用,并获取应用标识 appId ,详细参考申请注册流程,官网地址:https://open.kuaishou.com/platform
- 快手版本 >= 13.0.10
- 鸿蒙SDK版本 >= 12
- demo示例 (opens new window)
# 三、SDK接入说明
1、在依赖模块的 oh-package.json5 文件中增加SDK依赖
{
"dependencies": {
// 版本号设置成最新的版本
"@kwai_open_platform/opensdk": "1.0.1"
}
}
执行 ohpm install 命令安装sdk。
2、在 entry 模块下的 module.json5 文件中添加querySchemes配置。
{
"module": {
"querySchemes": [
"kwai",
"ksnebula"
]
}
}
3、在接受回调的 UIAbility 的 onCreate 和 onNewWant 方法中,调用 kwaiOpenSdk.handleCallback 方法处理回调数据。
export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
kwaiOpenSdk.handleCallback(want)
}
onNewWant(want: Want, launchParam: AbilityConstant.LaunchParam): void {
kwaiOpenSdk.handleCallback(want)
}
}
4、初始化 SDK
// 在使用sdk功能之前必须初始化
kwaiOpenSdk.init(context);
# 四、功能接入
# 4.1 授权
# 4.1.1 构造授权参数
let request = new AuthRequest(APPID);
request.requiredScopes = "user_phone,user_info";
request.optional0Scopes = "user_base,share_media,following,share_message"
request.optional1Scopes ="user_growth_distribution,message,live,relation"
request.callbackLocalEntry = "EntryAbility";
// 如果没有安装快手,会跳转到应用市场安装。如果不想要此功能可以不传
request.abilityContext = this.context;
参数说明:
| 参数 | 说明 | 是否必填 |
| requiredScopes | 申请获取用户的那些授权信息,如果需要多个scope,用 “,” 分割。比如:user_info,user_phone | 是 |
| optional0Scopes | 可选scope,授权页可以取消勾选,默非认勾选态 | 否 |
| optional1Scopes | 可选scope,授权页可以取消勾选,默认勾选态 | 否 |
| callbackLocalEntry | 回调的UIAbility名称,需要在module.json中声明 | 是 |
| abilityContext | 如果没有安装快手,会跳转到应用市场安装。不传则不会跳转到应用市场 | 否 |
# 4.1.2 开始请求授权
kwaiOpenSdk.createApi().authorize(this.context, request, {
onSuccess: (res)=> {
Logger.i("authCallback", "success.......");
this.authCode = (res as AuthResponse).code;
},
onError: (errorCode, msg) => {
Logger.i("authCallback", `failed, code: ${errorCode}, msg: ${msg}`);
}
})
# 4.1.3 根据 authCode 获取 access_token,参考 置换access_token (opens new window)
# 4.1.4 错误码
| 错误码 | 描述 |
| 999 | 成功 |
| 1000 | appId is empty |
| 1001 | request is error |
| 1002 | request is empty |
| 1003 | request bundle id is empty |
| 1004 | request harmony app id is empty |
| 1005 | not install kuaishou app |
| 2000 | auth request requiredScopes is empty |
| 2002 | 无效的授权内容 |
| 2101 | 提交授权信息失败,缺少授权参数 |
| 100200100 | 请求缺少参数或参数类型错误 |
| 100200101 | 无效的client,无效的 app 或 developer,可能是验证参数不正确(回调地址等信息) |
| 100200102 | 请求被拒绝,可能是无效的 token 等 |
| 100200103 | 请求的 responseType 错误 |
| 100200104 | 请求的 grantType 不支持 |
| 100200105 | 请求的 code 错误 |
| 100200106 | 请求的 scope 错误 |
| 100200107 | 无效的 openid |
| 100200108 | access_token过期 |
| 100200109 | 用户取消该 app 授权 |
| 100200110 | 用户授权过期 |
| 100200111 | 用户未授权过 |
| 100200112 | bundleToken不合法 |
| 100200113 | refresh_token过期 |
| 100200500 | 服务内部错误 |
# 4.2 发布单图、单视频
Tips: 图片支持JPG格式,视频支持MP4格式
# 4.2.1 构造分享参数
let shareRequest = createSingleImagePublish(APPID);
let list: ArrayList<string> = new ArrayList();
list.add(url);
shareRequest.mediaUri = list;
shareRequest.callbackLocalEntry = "EntryAbility";
# 4.2.2 开始分享
kwaiOpenSdk.createApi().share(this.context, shareRequest, {
onSuccess: (res)=> {
Logger.i("shareCallback", "success.......");
},
onError: (errorCode, msg) => {
Logger.i("shareCallback", `failed, code: ${errorCode}, msg: ${msg}`);
}
})
# 4.2.3 错误码
| 错误码 | 描述 |
| 999 | 成功 |
| 1000 | appId is empty |
| 1001 | request is error |
| 1002 | request is empty |
| 1003 | request bundle id is empty |
| 1004 | request harmony app id is empty |
| 1005 | not install kuaishou app |
| 3000 | 用户取消 |
| 3001 | 框架出错,请反馈客服 |
| 3002 | 参数错误,包含shareType、appId、harmonyId、mediaUri等相关参数 |
| 3003 | 打开发布页失败 |
| 3004 | 网络错误 |
| 3005 | 发布请求过于频繁(3s内重复调用) |
| 3006 | 视频size超过最大大小 |
| 3007 | 图片size超过最大大小 |
| 3008 | 拒绝当次分享动作;如果是发布视频:请检查视频长度 |
| 3009 | 鉴权失败 |
上一篇:《Android》
下一篇:《网站应用》
仍有疑问? 前往社区提问