Heim > PHP-Framework > Denken Sie an PHP > Verstehen Sie, wie Thinkphp das Douyin SDK integriert

Verstehen Sie, wie Thinkphp das Douyin SDK integriert

coldplay.xixi
Freigeben: 2020-08-14 16:48:20
nach vorne
5113 Leute haben es durchsucht

<img src="https://img.php.cn/upload/article/202008/14/2020081416430198815.jpg" alt="Verstehen Sie, wie Thinkphp das Douyin SDK integriert" ><img src="https://img.php.cn/upload/article/202008/14/2020081416430198815.jpg" alt="Verstehen Sie, wie Thinkphp das Douyin SDK integriert" >

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

第一步:下载抖音官方SDK

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

相关学习推荐:thinkphp

第二步:将SDK导入

1.解压下载的压缩文件

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

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

复制完成后目录结构如下

第三步:安装guzzlehttp依赖

因为抖音的SDK基本都是基于guzzlehttp发送的请求,所以需要安装依赖

我这里使用Composer进行安装,如你还未安装Composer ,请先安装

  • 1.执行命令 composer require guzzlehttp/guzzle:~6.0
  • 2.安装完成后即可调用接口

第四步:接口调用

接口调用可参考下载的SDK内置的php-sdkdouyin_opentestApi,里面有大部分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=&#39;&#39;)
  {
    //创建默认API的实例,verify=false不做ssl验证,否则可能报错,根据实际情况而定
    $apiInstance = new DefaultApi(new Client([&#39;verify&#39; => false]));
    //填写自己的client_key
    $client_key = "xxx";
    //填写自己的client_secret
    $client_secret = "xxx";
    $grant_type = &#39;authorization_code&#39;;//根据官方文档填写
    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() == &#39;error&#39;) {
      return error("登录失败");
    }
    //获取返回数据
    $data=$result->getData();
    //获取openid和access_toekn
    $openid = $data->getOpenId();
    $access_token = $data->getAccessToken();
    //创建用户信息API
    $userApi = new UserInfoApi(new Client([&#39;verify&#39; => false]));
    //获取用户信息
    $userInfo = $userApi->oauthUserinfoGetWithHttpInfo($access_token,$openid);
    dump($userInfo);

  }
}
Nach dem Login kopieren

常见问题整理

一、[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([&#39;verify&#39;=>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"
Nach dem Login kopieren

重启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'

调用UserInfoApioauthUserinfoGetWithHttpInfo接口出现该错误

问题原因

由于返回用户信息里的e_account_role

Weil es sich um die offiziellen Douyin-SDK-bezogenen Tutorials handelt Zu wenig, also schreibe ich diesen Blog im Sinne der Vorgänger, die Bäume pflanzten, damit zukünftige Generationen den Schatten genießen können

Schritt 1: Laden Sie das offizielle SDK von Douyin herunter

span>🎜🎜Download-Adresse: Offizieller Download des Douyin SDK
Wählen Sie PHP-Download-Adresse zum Herunterladen aus
🎜

🎜

🎜Verwandte Lernempfehlungen: thinkphp
🎜
🎜🎜Schritt 2 : Importieren Sie das SDK🎜🎜🎜1. Entpacken Sie die heruntergeladene komprimierte Datei🎜🎜2. Erstellen Sie einen neuen im Verzeichnis <code>extend im Stammverzeichnis des thinkphp-Projekts (auf derselben Ebene wie das Anwendungsverzeichnis) >Douyin-Verzeichnis und erstellen Sie dann ein neues Open-Verzeichnis im Douyin-Verzeichnis
🎜

🎜🎜3. Verschieben Sie die entpacktes php-sdk/douyin_open/lib-Verzeichnis Kopieren Sie alle darin enthaltenen Dateien und Ordner in das neu erstellte DouyinOpen-Verzeichnis
🎜

🎜

Nach der Kopie ist abgeschlossen, die Verzeichnisstruktur ist wie folgt
🎜

🎜

🎜Schritt 3: Guzzlehttp-Abhängigkeit installieren🎜🎜🎜 Da das SDK von Douyin im Wesentlichen auf guzzlehttp basiert, sendet es eine Anfrage, sodass Sie Abhängigkeiten installieren müssen. 🎜🎜Ich verwende Composer, um es zu installieren , bitte zuerst installieren🎜

  • 1. Führen Sie den Befehl composer require guzzlehttp/guzzle:~6.0
  • 2 aus , können Sie die Schnittstelle aufrufen
🎜🎜Schritt 4: Schnittstellenaufruf🎜🎜🎜Schnittstellenaufruf kann auf den integrierten php-sdkdouyin_opentestApi des heruntergeladenen SDK, das die meisten API-Aufrufmethoden enthält, können Sie sich auf den Aufruf beziehen🎜🎜Ich demonstriere hier nur die Autorisierung und den Erhalt von Benutzerinformationen🎜rrreee🎜🎜FAQ-Vereinbarung🎜🎜🎜1. [0] cURL-Fehler 60: SSL-Zertifikatproblem: Lokales Ausstellerzertifikat konnte nicht abgerufen werden (siehe https://curl.haxx.se/libcurl/c/libcurl- (errors.html) Fehler🎜🎜🎜Ursache des Problems🎜🎜🎜Dieser Fehler ist auf die Überprüfung des SSL-Zertifikats zurückzuführen🎜 🎜🎜Lösung 1🎜: 🎜🎜 Ändern Sie einfach $apiInstance = new DefaultApi(new Client()); zu <code>$apiInstance = new DefaultApi(new Client(['verify'= >false])); Das war's, ändern Sie hier hauptsächlich den neuen Client(), andere APIs sind gleich🎜 🎜Lösung 2: Laden Sie eine ca-bundle.crt herunter und legen Sie sie im entsprechenden Verzeichnis in php.ini ab. Konfigurieren Sie den Pfad in der Datei
https://github.com/bagder/ca-bundle/blob/e9175fec5d0c4d42de24ed6d84a06d504d5e5a09 /ca-bundle.crt
Fügen Sie es am Ende von php.ini hinzu, 🎜rrreee🎜Starten Sie den Webserver neu 🎜🎜2. Melden Sie, dass die Konfiguration ungültig ist 🎜🎜Rufen Sie die Autorisierungs-Anmeldeschnittstelle auf https:/ /open.douyin.com/platform/oauth/connect?client_key=xxx&response_type=code&scope=user_info&redirect_uri=redirect_uri&state=1 Melden Sie, dass die Autorisierung fehlgeschlagen ist oder die Konfiguration ungültig ist🎜

🎜🎜🎜Ursache des Problems🎜🎜🎜Die Anwendung wurde angewendet für ist mobile Anwendung, aber der eigentliche Aufruf ist WebanwendungWeb-Scan-Code. Die Webanwendung hat die Berechtigung, die Rückrufdomäne auszufüllen Name
🎜

🎜🎜🎜Lösung🎜🎜🎜Bewerben Sie sich erneut für eine Webanwendung. Sie müssen diese Rückrufadresse eingeben
🎜

🎜🎜3. Benutzerinformationen abrufen und melden. Ungültiger Wert für „e_account_role“, muss einer von „ EAccountM‘, ‚EAccountS‘, ‚EAccountK‘🎜🎜Dieser Fehler tritt auf, wenn die oauthUserinfoGetWithHttpInfo-Schnittstelle von UserInfoApi aufgerufen wird🎜🎜🎜Ursache des Problems🎜🎜🎜aufgrund der Rückgabe von The Das Feld e_account_role in den Benutzerinformationen ist null, was durch eine Änderung der API behoben werden kann. Dieser Fehler wird im Allgemeinen durch abnormale API-Aufrufe verursacht, z. B. durch die Verwendung des client_key der mobilen Anwendung, um die Autorisierung des Webs zu erzwingen Anwendung. 🎜🎜🎜 Lösung 🎜🎜

Da das Feld e_account_role in den zurückgegebenen Benutzerinformationen null ist, kann es durch Ändern der API behoben werden. e_account_role字段为null所导致,可通过修改API解决
根据TP的错误提示我们可以发下报错发生在DouyinOpenModelOauthUserinfoResponseData.php line 564
错误发生在第564行代码

将563 - 570行注释掉即可获取正常用户信息

修改前:

修改后:Gemäß der Fehleraufforderung von TP können wir den Fehlerbericht senden code>DouyinOpenModelOauthUserinfoResponseData.php Zeile 564


Der Fehler ist in Zeile 564 aufgetreten

Kommentieren Sie die Zeilen 563–570 aus, um normale Benutzerinformationen zu erhalten

Vor der Änderung:

Ändern nach:

🎜🎜🎜🎜🎜Verwandte Lernempfehlungen: 🎜Programmiervideo🎜🎜🎜

Das obige ist der detaillierte Inhalt vonVerstehen Sie, wie Thinkphp das Douyin SDK integriert. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:jb51.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage