抖音网站应用开发踩坑记录

流氓凡 技术分享 2021-01-12 8.2 K 7

一些准备工作就不多说了,还是需要申请一段时间的。你要拿到自己的应用Client Key和Client Secret。

下面将已抖音发布视频接口进行说明,内容比较简单,希望有所帮助!同时需要注意的是:下面均为演示demo,尚未进行“加工”仅作为参考示例!

安装SDK

抖音删除了之前推出的PHP版SDK(可能是写的太烂了吧),而且文档也太随心所欲了,我们这里找到一个简单整合的sdk使用 composer进行安装

 composer require liaodan100/douyin_sdk

拉起授权并获取授权code

use ByteDance\App as AppServe;
$app = AppServe::make('Douyin', ['client_key' => '你的key', 'client_secret' => '你的secret']);
$url = $app->connect(['video.create','aweme.share','video.data','video.list'] , '你的回调地址' , ''); // 数组参数表示授权的Scope
echo $url; // 生成授权登录地址,你可以生成二维码使用抖音扫码即可进入授权页面

自己的scope如何查找?

image.png

以上代码会返回一段url,你可以 使用抖音直接访问此url会进入授权页面,类似微信公众号授权页面吧!

这里需要注意的是,回调文件要使用get接收如:$_GET 里面你需要拿到code参数,示例:

$code = $_GET['code'];

是不是有点坑的 感觉,正常的回调参数都是需要post接收的不是么。。。

拿到 code去获取access_token

$result = $app->access_token($code);
// 拿到所需要的返回值
$result = json_decode($result->response,true)['data'];
// 此时$result里面将包含 access_token、openid等重要参数,记录缓存即可!

调用上传视频接口/video/upload 

在创建视频之前,我们需要调用此接口拿到video_id来进行发布,请求地址参数就需要用到上一步拿到的open_id和access_token参数值了

public function uploadVideo()
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://open.douyin.com/video/upload?open_id=' . $this->authData['open_id'] . '&access_token=' . $this->authData['access_token'],
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array('video' => new \CURLFILE(WEB_PATH . 'upload/59c21cd10410f.mp4'), '' => ''), // 这里需要选择的是本地视频路径
        ));
        $response = curl_exec($curl);
        curl_close($curl);
        $response = json_decode($response, true);
        // 发布视频
        echo $response['data']['video']['video_id']; // 拿到video_id准备去发布吧
    }

调用创建视频接口 /video/create进行发布视频吧

public function createVideo($video_id)
    {
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => 'https://open.douyin.com/video/create?open_id=' . $this->authData['open_id'] . '&access_token=' . $this->authData['access_token'],
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => json_encode(array(
                'video_id' => $video_id,
                'text' => '我的演示视频 #演示',
            )),
        ));
        $response = curl_exec($curl);
        curl_close($curl);
        echo $response;
    }

需要注意的是,这里的body参数必须是json格式的,否则会出现参数不合法的报错!

这时候看看自己的抖音是不是已经发布成功了呢!

参考文档:https://open.douyin.com/platform/doc/6848798087398295555

结束

到这里就结束了,希望此记录会帮助你们节省一些开发的宝贵时间吧!


评论

精彩评论
  • 2021-11-27 16:47:13

    抖音上传视频/video/upload 接口,一个30M的视频二十多秒才返回结果这正常吗

  • 2021-06-29 17:35:46

    createVideo 的时候 一直参数不合法 你有遇到么

  • 2021-05-01 20:28:10

    返回值都拿到了可是抖音里没那条动态

  • 2021-04-16 07:48:54

    你好,我的用不了,可以帮看一下吗,红包感谢

  • 2021-01-25 17:35:07

    作者文章语言优美内容充实主题明确引人入胜,隔壁小孩都看哭了。。**.zhifazhifa.com