<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
,请先安装
composer require guzzlehttp/guzzle:~6.0
第四步:接口调用
接口调用可参考下载的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='') { //创建默认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
提示授权失败或配置失效
问题原因
申请的应用为移动应用
,实际调用为网页应用
web扫码,网页应用在申请的时候有个授权域回调的配置,就是填写回调域名的
解决方案
重新申请网页应用,需要填写这个回调地址
三、获取用户信息报Invalid value for ‘e_account_role', must be one of ‘EAccountM', ‘EAccountS', ‘EAccountK'
调用UserInfoApi
的oauthUserinfoGetWithHttpInfo
接口出现该错误
问题原因
由于返回用户信息里的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 SDKPHP-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🎜
composer require guzzlehttp/guzzle:~6.0
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 Dateihttps:/ /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 Webanwendung
Web-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
Zeile 564
aufgetretenKommentieren Sie die Zeilen 563–570 aus, um normale Benutzerinformationen zu erhalten
Vor der Änderung:
🎜🎜🎜🎜🎜Verwandte Lernempfehlungen: 🎜Programmiervideo🎜🎜🎜
Ändern nach:
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!