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 at(@)符号的用法简介
Jul 11 PHP
php学习笔记 [预定义数组(超全局数组)]
Jun 09 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
解析isset与is_null的区别
Aug 09 PHP
php实现中文转数字
Feb 18 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
Mar 15 PHP
PHP实现百度人脸识别
May 06 PHP
php中错误处理操作实例分析
Aug 23 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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 编写大型网站问题集
2010/05/07 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
json 入门基础教程 推荐
2009/10/31 Javascript
jquery的flexigrid无法显示数据提示获取到数据
2013/07/19 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
vue自定义组件实现双向绑定
2021/01/13 Vue.js
python生成随机mac地址的方法
2015/03/16 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
2018/07/25 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
python3.x提取中文的正则表达式示例代码
2019/07/23 Python
pandas参数设置的实用小技巧
2020/08/23 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
电大自我鉴定
2013/10/27 职场文书
工作人员思想汇报
2014/01/09 职场文书
打架检讨书400字
2014/01/17 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
应用外语系自荐信
2014/06/26 职场文书
如何写辞职信
2015/05/13 职场文书
团队拓展训练感想
2015/08/07 职场文书