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

第一步:下载抖音官方sdk

下载地址:抖音sdk官方下载
选择 php下载地址 进行下载即可

第二步:将sdk导入

1.解压下载的压缩文件

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

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

复制完成后目录结构如下

第三步:安装guzzlehttp依赖

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

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

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

第四步:接口调用

接口调用可参考下载的sdk内置的php-sdk\douyin_open\test\api,里面有大部分api调用方法,可参考调用

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

<?php
/**
 * created by phpstorm.
 * user: bigniu
 * date: 2020-04-25
 * time: 21:46:42
 */

namespace app\api\controller\v1;


use douyin\open\api\defaultapi;
use douyin\open\api\userinfoapi;
use exception;
use guzzlehttp\client;
use think\controller;

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文件中配置下路径

在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的错误提示我们可以发下报错发生在douyin\open\model\oauthuserinforesponsedata.php line 564
错误发生在第564行代码

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

修改前:

修改后:

到此这篇关于thinkphp集成抖音sdk的实现方法的文章就介绍到这了,更多相关thinkphp集成抖音sdk内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!