快手 API
  1. 接入指引
快手 API
  • 萌新必读
    • 平台介绍
    • 开发者入驻
    • 应用注册
    • 基础信息修改
  • 接入指引
    • Android 接入
    • 网站应用接入
    • 快手服务端SDK接入- java版本
    • iOS 接入
      • 接入指南
      • 功能使用
  • 开放能力
    • 快手登录
      • 说明文档
      • code2AccessToken
      • refreshToken
    • 用户信息
      • 公开信息
        • GetUserInfo
      • 手机号
        • GetUserPhone
      • 关系链
    • 内容管理
      • 创建视频
        • 发起上传
          • 发起上传
        • 上传视频
          • A 直接上传
            • A.1 二进制body方式
            • A.2 Multipart Form Data方式
          • B 分片上传
            • B.1 上传分片
            • B.2 断点续传
            • B.3 完成分片上传
        • 发布视频
          • 发布视频
      • 删除视频
        • 删除视频
      • 查询视频
        • 查询用户视频列表
        • 查询单一视频详情
        • 查询视频数量接口
    • 直播
      • 概述
      • 直播托管模式
      • 获取推流地址接口
        • 人脸识别
        • 获取推流地址接口
      • create_QRcode
      • get_live_scene
      • 结束直播接口
      • 获取直播状态信息
    • WebHook
      • 接入指南
      • 事件列表
        • 测试事件
        • 授权事件
        • 解除授权事件
    • 粉条
      • 粉条服务接入指南
      • 直播接口
        • 获取定向配置
        • 获取出价配置
        • 获取钱包配置
        • 获取可投放作品
        • 生成订单ID
        • 下订单
        • 关闭订单
        • 获取订单列表
        • 获取订单信息
        • 获取订单效果
      • 内容接口
        • 获取定向配置-photo
        • 查询相似粉丝定向行业和达人
        • 模糊搜索相似粉丝达人
        • 获取用户与行业的dmpId
        • 获取钱包配置
        • 获取推荐价格列表(入门版)
        • 根据价格获取购量(入门版)
        • 获取期望提升
        • 获取推荐出价与价格区间(出价版)
        • 不出价版创建订单
        • 出价版创建订单
        • 关闭订单
        • 查询订单效果
  • 其他
    • 错误码
    • 联系我们
    • 常见问题
  1. 接入指引

快手服务端SDK接入- java版本

1 简介

为了简化开发者接入开放平台能力,提供了服务端的SDK,开发者可以依托此SDK快速接入开放平台。

2 如何接入

在项目中POM文件引入依赖

<dependency>
    <groupId>com.github.kwaiopen</groupId>
    <artifactId>kwai-open-sdk</artifactId>
    <version>1.0.5</version>
</dependency>

关于SDK版本号更新,请关注平台公告.

3 包含组件

组件介绍
KwaiOpenOauthApioauth2.0协议的接口封装
KwaiOpenUserApi获取用户信息的相关接口封装
KwaiOpenVideoApi发布内容能力的相关接口封装
KwaiOpenLiveApi直播能力的相关接口封装

3.1 KwaiOpenOauthApi

3.1.1初始化

KwaiOpenOauthApi kwaiOpenOauthApi = KwaiOpenOauthApi.init(appId);

建议声明为javabean或者静态变量.

3.1.2 KwaiOpenOauthApi.getAccessToken

授权code置换access_token

请求参数说明
code授权流程获取的授权code
appSecret注册app时获取的appSecret
返回参数说明
accessToken访问令牌,需要开发者自己保存,访问openAPI时需要传递
expiresIn访问令牌过期时间,单位(秒)
refreshToken刷新令牌,需要开发者自己保存,在accessToken过期前刷新accessToken
openId授权用户对应的唯一ID,开发者需要保存起来和当前的用户做关联
scopes本次授权token中包含的scope列表,如果请求的openAPI对应的scope没有包含在这个列表里,需要让用户授权
refreshTokenExpiresInrefreshToken的过期时间,单位(秒)

调用demo

try{
	AccessTokenRequest request = new AccessTokenRequest(code, appSecret);
	AccessTokenResponse response = kwaiOpenOauthApi.getAccessToken(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.1.3 KwaiOpenOauthApi.refreshToken

在accessToken过期前,需要调用此接口刷新accessToken和refreshToken

请求参数说明
refreshToken刷新令牌,确保refreshToken的仍在有效时间内
appSecret注册app时获取的appSecret
返回参数说明
accessToken访问令牌,需要开发者自己保存,访问openAPI时需要传递
expiresIn访问令牌过期时间,单位(秒)
refreshToken刷新令牌,需要开发者自己保存,在accessToken过期前刷新accessToken
scopes本次授权token中包含的scope列表,如果请求的openAPI对应的scope没有包含在这个列表里,需要让用户授权
refreshTokenExpiresInrefreshToken的过期时间,单位(秒)

调用demo

try{
	RefreshTokenRequest request = new RefreshTokenRequest(refreshToken, appSecret);
        RefreshTokenResponse refreshTokenResponse = kwaiOpenOauthApi.refreshToken(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.2 KwaiOpenUserApi

3.2.1初始化

KwaiOpenUserApi kwaiOpenUserApi = KwaiOpenUserApi.init(appId);

建议声明为javabean或者静态变量.

3.2.2 KwaiOpenUserApi.getUserInfo

获取用户信息

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_info, 同时需要确保accessToken在有效期内
返回参数-说明
userInfo-用户信息
-name用户昵称
-sex用户性别
-fan用户粉丝数
-follow用户关注数
-head用户头像图片地址
-bigHead用户高清头像图片地址
-city用户城市

调用demo

try{
	UserInfoRequest request = new UserInfoRequest(accessToken);
        UserInfoResponse userInfo = kwaiOpenUserApi.getUserInfo(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.2.3 KwaiOpenUserApi.getUserPhone<功能内测中>

获取用户电话信息

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_phone, 同时需要确保accessToken在有效期内
appSecret应用的appSecret,从应用的详情页获取
返回参数-说明
userPhoneInfo-电话信息
-countryCode电话的区域码,国内为 86
-phoneNumber用户的电话号码

调用demo

try{
	UserPhoneRequest request = new UserPhoneRequest(accessToken, appSecret);
        UserPhoneResponse userPhone = kwaiOpenUserApi.getUserPhone(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3 KwaiOpenVideoApi

3.3.1初始化

KwaiOpenVideoApi kwaiOpenVideoApi = KwaiOpenVideoApi.init(appId);

建议声明为javabean或者静态变量.

3.3.2 KwaiOpenVideoApi.queryVideoList

查询用户的作品列表

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_info, 同时需要确保accessToken在有效期内
count每页视频数,可以不赋值,默认为20
cursor上一页的最后一个视频ID,获取第一页的时候不赋值,获取第二页的时候传递上一页请求的lastCursor
返回参数-说明
lastCursor-本页最后一个作品ID,查询下一页时使用
videoList-本页视频列表
-photoId发布的作品ID
-caption发布的作品标题
-cover作品封面地址
-playUrl作品播放链接(未转码完成时,此字段没有值)
-createTime创建时间
-likeCount作品点赞数
-commentCount作品评论数
-viewCount作品观看数
-pending作品状态(是否还在处理中,不能观看)

调用demo

try{
        VideoListRequest request = new VideoListRequest(accessToken, 20);
        VideoListResponse videoListResponse = kwaiOpenVideoApi.queryVideoList(videoListRequest);
        VideoListRequest nextPage = new VideoListRequest(accessToken, videoListResponse.getLastCursor(), 20);
        VideoListResponse nextPageResponse = kwaiOpenVideoApi.queryVideoList(nextPage);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.3 KwaiOpenVideoApi.queryVideoInfo

查询用户的作品列表

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_info, 同时需要确保accessToken在有效期内
photoId作品ID
返回参数-说明
videoInfo-作品信息
-photoId发布的作品ID
-caption发布的作品标题
-cover作品封面地址
-playUrl作品播放链接(未转码完成时,此字段没有值)
-createTime创建时间
-likeCount作品点赞数
-commentCount作品评论数
-viewCount作品观看数
-pending作品状态(是否还在处理中,不能观看)

调用demo

try{
        VideoInfoRequest request = new VideoInfoRequest(accessToken, photoId);
        VideoInfoResponse response = kwaiOpenVideoApi.queryVideoInfo(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.4 KwaiOpenVideoApi.createVideo

一键创建视频,封装了上传和发布的全部过程.
如果上传文件大于10M,会自动进行单线程分片上传.
如果相对上传过程需要进行更多的控制,可以使用下面的分步处理接口(3.3.5 - 3.3.11)

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_publish, 同时需要确保accessToken在有效期内
videoFileData视频的二进制数据
caption视频标题
cover视频的封面图片,请使用jpg文件
stereoType全景参数,NOT_SPHERICAL_VIDEO SPHERICAL_VIDEO_360 SPHERICAL_VIDEO_180,非全景视频不需要传递
返回参数-说明
videoInfo-发布的作品信息
-photoId发布的作品ID
-caption发布的作品标题
-cover作品封面地址
-playUrl作品播放链接(未转码完成时,此字段没有值)
-createTime创建时间
-likeCount作品点赞数
-commentCount作品评论数
-viewCount作品观看数
-pending作品状态(是否还在处理中,不能观看)
try{
        byte[] videoFileData = getVideoData();
        byte[] coverFileData = getConverData();
	CreateVideoRequest request = new CreateVideoRequest(accessToken);
	request.setCaption("一键发布测试");
        request.setCover(coverFileData);
        request.setVideoFileData(videoFileData);
        CreateVideoResponse response = kwaiOpenVideoApi.createVideo(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.5 KwaiOpenVideoApi.startUpload

分步处理接口,第一步,开始上传文件,获得uploadToken

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_publish, 同时需要确保accessToken在有效期内
返回参数说明
uploadToken上传token
endpoint上传服务器地址
try{
	StartUploadRequest request = new StartUploadRequest(accessToken);
        StartUploadResponse startUploadResponse = kwaiOpenVideoApi.startUpload(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.6 KwaiOpenVideoApi.uploadFile

分步处理接口,第二步,上传文件,
如果对上传过程不敏感时,可以使用此接口.
如果上传文件大于10M,会自动进行单线程分片上传.
如果需要对上传过程进行处理(自己处理分片,多线程上传分片,断点续传等功能),可以使用下面的处理接口自行上传(3.3.8 - 3.3.10)

请求参数说明
uploadTokenstartUpload接口获取到的uploadToken
endPointstartUpload接口获取到的endPoint
fileData需要上传的文件二进制数据
返回参数说明
uploadToken上传token
endpoint上传服务器地址
fragmentWay是否是分片方式上传的
try{
	UploadFileRequest uploadFileRequest = new UploadFileRequest(startUploadResponse, videoFileData);
        UploadFileResponse response =  kwaiOpenVideoApi.uploadFile(uploadFileRequest);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.7 KwaiOpenVideoApi.uploadFileSingle

分步处理接口,第二步,上传文件,
对于小于10M的文件调用此方法,不分片直接上传,
不需要调用uploadFileFragmentComplete

请求参数说明
uploadTokenstartUpload接口获取到的uploadToken
endPointstartUpload接口获取到的endPoint
fileData需要上传的文件二进制数据
try{
	UploadSingleRequest request = new UploadSingleRequest(startUploadResponse, videoFileData);
        UploadSingleResponse response =  kwaiOpenVideoApi.uploadFileSingle(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.8 KwaiOpenVideoApi.uploadFileFragment

分步处理接口,第二步,上传文件,
对于大于10M的文件调用此方法,自行分片之后多次调用此方法上传每个分片
上传完成后需要调用uploadFileFragmentComplete 完成上传

请求参数说明
uploadTokenstartUpload接口获取到的uploadToken
endPointstartUpload接口获取到的endPoint
fileData需要上传的文件二进制数据
fragmentId分片ID,从0开始自增

调用示例

try{
	byte[] fileData = getFile();
        List<byte[]> bytes = ArrayUtils.splitBytes(fileData, 8 * 1024 * 1024);
        int fragment = 0;
        for (byte[] aByte : bytes) {
            kwaiOpenVideoApi.uploadFileFragment(new UploadFragmentRequest(startUploadResponse, aByte, fragment));
            fragment++;
        }

        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.9 KwaiOpenVideoApi.uploadFileFragmentComplete

分步处理接口,第二步,上传文件,分片上传结束
分片上传完成后需要调用此接口结束上传

请求参数说明
uploadTokenstartUpload接口获取到的uploadToken
endPointstartUpload接口获取到的endPoint
fragmentCount总分片数

调用示例

try{
	UploadCompleteRequest request = new UploadCompleteRequest(startUploadResponse, fragmentCount);
        UploadCompleteResponse response =  kwaiOpenVideoApi.uploadFileFragmentComplete(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.10 KwaiOpenVideoApi.getFragmentResumeInfo

分步处理接口,第二步,上传文件,获取断点信息
分片上传中间有部分步骤失败时,可以调用此接口获取到已经上传成功的分片,然后将没有成功的分片进行续传,续传完成后调用uploadFileFragmentComplete完成上传

请求参数说明
uploadTokenstartUpload接口获取到的uploadToken
endPointstartUpload接口获取到的endPoint
返回参数-说明
existed-是否已经上传完毕了
fragmentIndex-从0开始的已上传的连续分片id (-1 表示没有分片)
fragmentList-已上传的分片
-id已上传的分片ID
-size已上传的分片大小
-checksum
fragmentIndexBytes-从0开始的已上传的连续分片size
tokenId-上传id 无需关注

调用示例

try{
	GetFragmentResumeInfoRequest request = new GetFragmentResumeInfoRequest(uploadToken, endPoint);
        GetFragmentResumeInfoResponse fragmentResumeInfo =  kwaiOpenVideoApi.getFragmentResumeInfo(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.3.11 KwaiOpenVideoApi.videoPublish

分步处理接口,第三步,发布视频
调用uploadFileSingle成功后 ,
或者分片上传调用uploadFileFragmentComplete成功后
调用此接口进行视频发布

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_publish, 同时需要确保accessToken在有效期内
caption视频标题
cover视频的封面图片,请使用jpg文件
stereoType全景参数,NOT_SPHERICAL_VIDEO SPHERICAL_VIDEO_360 SPHERICAL_VIDEO_180,非全景视频不需要传递
uploadTokenstartUpload接口获取到的uploadToken
返回参数-说明
videoInfo-发布的作品信息
-photoId发布的作品ID
-caption发布的作品标题
-cover作品封面地址
-playUrl作品播放链接(未转码完成时,此字段没有值)
-createTime创建时间
-likeCount作品点赞数
-commentCount作品评论数
-viewCount作品观看数
-pending作品状态(是否还在处理中,不能观看)

调用示例

try{
        VideoPublishRequest videoPublishRequest = new VideoPublishRequest(access_token);
	videoPublishRequest.setCaption("发布标题");
	videoPublishRequest.setCover(coverData);
	videoPublishRequest.setUploadToken(uploadToken);
        VideoPublishResponse videoPublishResponse = videoPublish(videoPublishRequest);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.4 KwaiOpenLiveApi

3.4.1初始化

KwaiOpenLiveApi kwaiOpenLiveApi = KwaiOpenLiveApi.init(appId);

建议声明为javabean或者静态变量.

3.4.2 KwaiOpenLiveApi.getPushUrl

获取推流地址 开始直播
获取推流地址后,请自行使用RTMP方式进行推流

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_live, 同时需要确保accessToken在有效期内
file直播封面,不超过2M,只能上传jpg格式,推荐尺寸720x1280,
caption直播标题,长度不超过13个汉字,默认
panoramic非全景直播 0、180 全景直播 1、360 全景直播 2,非必传,默认0
shopLive是否为电商(小黄车)直播,非必传,默认 false
deviceName设备名称,用于数据聚合分析,非必传
liveSceneType直播场景分类id,值域参考如下分类接口返回值(例如全景直播 liveSceneType=22141)
返回参数-说明
content-推流信息
-pushUrl推流地址
-liveStreamName推流名称

调用示例

try{
        GetPushUrlResquest resquest = new GetPushUrlResquest(accessToken);
        resquest.setCaption("测试直播");
        resquest.setFile(coverData);
        GetPushUrlResponse response = kwaiOpenLiveApi.getPushUrl(resquest);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.4.3 KwaiOpenLiveApi.getAllScene

获取直播分类

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_live, 同时需要确保accessToken在有效期内

返回参数
见 文档

调用示例

try{
         GetAllSceneRequest request = new GetAllSceneRequest(accessToken);
        GetAllSceneResponse response = kwaiOpenLiveApi.getAllScene(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.4.4 KwaiOpenLiveApi.stopPush

结束直播

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_live, 同时需要确保accessToken在有效期内
liveStreamName获取推流地址中的推流名称

调用示例

try{
        StopPushRequest request = new StopPushRequest(accessToken,liveStreamName);
        StopPushResponse response = kwaiOpenLiveApi.stopPush(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

3.4.5 KwaiOpenLiveApi.pushStatus

获取推流状态

请求参数说明
accessTokengetAccessToken接口获取到的accessToken, 需要确保scope包含 user_video_live, 同时需要确保accessToken在有效期内
liveStreamName获取推流地址中的推流名称
返回参数-说明
content-推流状态
-liveStreamName推流ID
-status直播中 LIVING、未开播 LIVE_NOT_START、已关播 LIVE_END
-statusMsg状态原因说明

调用示例

try{
        PushStatusRequest request = new PushStatusRequest(accessToken,liveStreamName);
        PushStatusResponse response = kwaiOpenLiveApi.pushStatus(request);
        //调用成功
}catch(KwaiOpenException e){
	//调用失败
}

【快手】API开发者 微信交流群

用微信扫右侧二维码,加入【快手】API开发者 交流群,互助沟通

扫码加入交流群
修改于 2021-12-29 03:57:49
上一页
网站应用接入
下一页
接入指南
Built with