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实现分页的一个示例
Oct 09 PHP
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
smarty 原来也不过如此~~呵呵
Nov 25 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
Dec 29 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
使用PHP导出Word文档的原理和实例
Oct 21 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
Feb 13 PHP
最常用的8款PHP调试工具
Jul 06 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
PHP使用array_fill定义多维数组的方法
Mar 18 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
PHP+Mysql分布式事务与解决方案深入理解
Feb 27 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中常见的缓存技术实例分析
2015/09/23 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
面向对象的javascript(笔记)
2009/10/06 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
新手快速学习JavaScript免费教程资源汇总
2015/06/25 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
2018/10/31 Javascript
vue.js 2.0实现简单分页效果
2019/07/29 Javascript
判断JavaScript中的两个变量是否相等的操作符
2019/12/21 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
解决Antd Table表头加Icon和气泡提示的坑
2020/11/17 Javascript
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
face++与python实现人脸识别签到(考勤)功能
2019/08/28 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
2019/10/24 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
标准导师推荐信(医学类)
2013/10/28 职场文书
工程部主管岗位职责
2015/02/12 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
国家助学金受助感言
2015/08/01 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers