当前位置:首页 > 学无止境 > PHP>正文

Thinkphp集成抖音SDK的实现方法

2020-05-22 01:12:25 分类: PHP 阅读(2210) 编辑:AndyGuo 评论(6)

第一步:下载抖音官方SDK


第二步:将SDK导入


1.解压下载的压缩文件


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


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


复制完成后目录结构如下


image.png


第三步:安装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文件中配置下路径

https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09/ca-bundle.crt

在php.ini的末尾加入 ,

1

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'


调用UserInfoApi的oauthUserinfoGetWithHttpInfo接口出现该错误


问题原因


由于返回用户信息里的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的实现方法和问题整理的全部内容了,更多PHP教程请继续关注小郭博客。


标签:
相关推荐

热门标签 更多