视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
了解Thinkphp集成抖音SDK的实现方法
2020-11-02 18:28:25 责编:小采
文档

由于抖音官方SDK相关教程太少, 所以本着 前人种树后人乘凉 的精神,写下本篇博客

第一步:下载抖音官方SDK

下载地址:抖音SDK官方下载
选择 Php下载地址 进行下载即可

相关学习推荐:thinkphp

第二步:将SDK导入

1.解压下载的压缩文件

2.在thinkphp项目的根目录(与application目录同级)下的extend目录下新建Douyin目录,再在Douyin目录里新建Open目录

3.将解压出来的php-sdk/douyin_open/lib目录里面的所有文件和文件夹全部复制到刚才新建的DouyinOpen目录下

复制完成后目录结构如下

第三步:安装guzzlehttp依赖

因为抖音的SDK基本都是基于guzzlehttp发送的请求,所以需要安装依赖

我这里使用Composer进行安装,如你还未安装Composer ,请先安装

  • 1.执行命令 composer require guzzlehttp/guzzle:~6.0
  • 2.安装完成后即可调用接口
  • 第四步:接口调用

    接口调用可参考下载的SDK内置的php-sdkdouyin_open estApi,里面有大部分API调用方法,可参考调用

    我这里只演示授权并获取用户信息

    <?php
    /**
     * Created by PhpStorm.
     * User: bigniu
     * Date: 2020-04-25
     * Time: 21:46:42
     */
    
    namespace appapicontrollerv1;
    
    
    use DouyinOpenApiDefaultApi;
    use DouyinOpenApiUserInfoApi;
    use Exception;
    use GuzzleHttpClient;
    use thinkController;
    
    class Douyin extends Controller
    {
     public function auth($code='')
     {
     //创建默认API的实例,verify=false不做ssl验证,否则可能报错,根据实际情况而定
     $apiInstance = new DefaultApi(new Client(['verify' => false]));
     //填写自己的client_key
     $client_key = "xxx";
     //填写自己的client_secret
     $client_secret = "xxx";
     $grant_type = 'authorization_code';//根据官方文档填写
     try {
     //调用获取AccessToken的接口
     $result = $apiInstance->oauthAccessTokenGet($client_key, $client_secret, $code, $grant_type);
     } catch (Exception $e) {
     return error("登录失败");
     }
     //判断返回的数据是否为空
     if (!$result) {
     return error("登录失败");
     }
     //判断返回的Message是否为error
     if ($result->getMessage() == 'error') {
     return error("登录失败");
     }
     //获取返回数据
     $data=$result->getData();
     //获取openid和access_toekn
     $openid = $data->getOpenId();
     $access_token = $data->getAccessToken();
     //创建用户信息API
     $userApi = new UserInfoApi(new Client(['verify' => false]));
     //获取用户信息
     $userInfo = $userApi->oauthUserinfoGetWithHttpInfo($access_token,$openid);
     dump($userInfo);
    
     }
    }

    常见问题整理

    一、[0] cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 错误

    问题原因

    该错误是由于 SSL证书 验证的原因

    解决方案1:

    只需要把$apiInstance = new DefaultApi(new Client());改为$apiInstance = new DefaultApi(new Client(['verify'=>false])); 即可,主要是修改new Client()这里,其他API同样

    解决方案2: 下载一个ca-bundle.crt ,放到对应的目录,在php.ini文件中配置下路径
    https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt
    在php.ini的末尾加入 ,

    curl.cainfo="真实路径/ca-bundle.crt"

    重启web服务器

    二、提示配置无效

    调用授权登录接口https://open.douyin.com/platform/oauth/connect?client_key=xxx&response_type=code&scope=user_info&redirect_uri=redirect_uri&state=1提示授权失败或配置失效

    问题原因

    申请的应用为移动应用,实际调用为网页应用web扫码,网页应用在申请的时候有个授权域回调的配置,就是填写回调域名的

    解决方案

    重新申请网页应用,需要填写这个回调地址

    三、获取用户信息报Invalid value for ‘e_account_role', must be one of ‘EAccountM', ‘EAccountS', ‘EAccountK'

    调用UserInfoApioauthUserinfoGetWithHttpInfo接口出现该错误

    问题原因

    由于返回用户信息里的e_account_role字段为null所导致,可通过修改API解决,这个错误一般为非正常调用API所导致,如:使用移动应用的client_key强制授权网页应用导致

    解决方案

    由于返回用户信息里的e_account_role字段为null所导致,可通过修改API解决
    根据TP的错误提示我们可以发下报错发生在DouyinOpenModelOauthUserinfoResponseData.php line 5
    错误发生在第5行代码

    将563 - 570行注释掉即可获取正常用户信息

    修改前:

    修改后:

    相关学习推荐:编程视频

    下载本文
    显示全文
    专题