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 相关文章推荐
PHPwind整合最土系统用户同步登录实现方法
Dec 08 PHP
PHP中的错误处理、异常处理机制分析
May 07 PHP
PHP时间格式控制符对照表分享
Jul 23 PHP
php上传图片到指定位置路径保存到数据库的具体实现
Dec 30 PHP
分享ThinkPHP3.2中关联查询解决思路
Sep 20 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
PHP接口并发测试的方法(推荐)
Dec 15 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
PHP分享图片的生成方法
Apr 25 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创建PDF中文文档
2006/10/09 PHP
用PHP函数解决SQL injection
2006/12/09 PHP
利用PHP制作简单的内容采集器的代码
2007/11/28 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
2018/05/16 PHP
用js判断浏览器是否是IE的比较好的办法
2007/05/08 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
node.js中 stream使用教程
2016/08/28 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
jQuery倒计时代码(超简单)
2017/02/27 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python3 入门教程 简单但比较不错
2009/11/29 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
更改Ubuntu默认python版本的两种方法python-&gt; Anaconda
2016/12/18 Python
python+pandas生成指定日期和重采样的方法
2018/04/11 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
Python类及获取对象属性方法解析
2020/06/15 Python
HTML5 Notification(桌面提醒)功能使用实例
2014/03/17 HTML / CSS
实例讲解HTML5的meta标签的一些应用
2015/12/08 HTML / CSS
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
Clearly澳大利亚:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
应届毕业生求职简历自我评价
2015/03/02 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
python实现学生信息管理系统(面向对象)
2022/06/05 Python