# 鸿蒙

更新时间: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成功
1000appId is empty
1001request is error
1002request is empty
1003request bundle id is empty
1004request harmony app id is empty
1005not install kuaishou app
2000auth request requiredScopes is empty
2002无效的授权内容
2101提交授权信息失败,缺少授权参数
100200100请求缺少参数或参数类型错误
100200101无效的client,无效的 app 或 developer,可能是验证参数不正确(回调地址等信息)
100200102请求被拒绝,可能是无效的 token 等
100200103请求的 responseType 错误
100200104请求的 grantType 不支持
100200105请求的 code 错误
100200106请求的 scope 错误
100200107无效的 openid
100200108access_token过期
100200109用户取消该 app 授权
100200110用户授权过期
100200111用户未授权过
100200112bundleToken不合法
100200113refresh_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成功
1000appId is empty
1001request is error
1002request is empty
1003request bundle id is empty
1004request harmony app id is empty
1005not install kuaishou app
3000用户取消
3001框架出错,请反馈客服
3002参数错误,包含shareType、appId、harmonyId、mediaUri等相关参数
3003打开发布页失败
3004网络错误
3005发布请求过于频繁(3s内重复调用)
3006视频size超过最大大小
3007图片size超过最大大小
3008拒绝当次分享动作;如果是发布视频:请检查视频长度
3009鉴权失败
Copyright ©2026, All Rights Reserved