Thinkphp集成抖音SDK的实现方法


Posted in PHP onApril 28, 2020

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

第一步:下载抖音官方SDK

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

Thinkphp集成抖音SDK的实现方法

第二步:将SDK导入

1.解压下载的压缩文件

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

Thinkphp集成抖音SDK的实现方法

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

Thinkphp集成抖音SDK的实现方法

复制完成后目录结构如下

Thinkphp集成抖音SDK的实现方法

第三步:安装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的末尾加入 ,

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提示授权失败或配置失效

Thinkphp集成抖音SDK的实现方法

问题原因

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

Thinkphp集成抖音SDK的实现方法

解决方案

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

Thinkphp集成抖音SDK的实现方法

三、获取用户信息报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的实现方法

到此这篇关于Thinkphp集成抖音SDK的实现方法的文章就介绍到这了,更多相关Thinkphp集成抖音SDK内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
用PHP和ACCESS写聊天室(七)
Oct 09 PHP
php实现mysql同步的实现方法
Oct 21 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
Linux下PHP连接Oracle数据库
Aug 20 PHP
php中PDO方式实现数据库的增删改查
May 17 PHP
PHP内核探索:哈希表碰撞攻击原理
Jul 31 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
Mar 07 PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
php语法检查的方法总结
Jan 21 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
PHP扩展类型及安装方式解析
Apr 27 #PHP
PHP如何开启Opcache功能提升程序处理效率
Apr 27 #PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
Apr 27 #PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
Apr 27 #PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 #PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 #PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 #PHP
You might like
PHP无刷新上传文件实现代码
2011/09/19 PHP
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
基于JQuery的访问WebService的代码(可访问Java[Xfire])
2010/11/19 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
属于你的jQuery提示框(Tip)插件
2016/01/20 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
NodeJs使用Mysql模块实现事务处理实例
2017/05/31 NodeJs
vue-resouce设置请求头的三种方法
2017/09/12 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
Python isinstance判断对象类型
2008/09/06 Python
Python读取键盘输入的2种方法
2015/06/16 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
把csv文件转化为数组及数组的切片方法
2018/07/04 Python
python3 下载网络图片代码实例
2019/08/27 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
django中瀑布流写法实例代码
2019/10/14 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
Python如何合并多个字典或映射
2020/07/24 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
自荐信的两点禁忌
2013/10/30 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
青年志愿者活动方案
2014/08/17 职场文书
学习十八大演讲稿
2014/09/15 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python