抖音官方文檔:https://open.douyin.com/platform/doc/OpenAPI-oauth2
抖音的官方文檔和接口及其隨意。。。。
調用流程包括:
-
第三方發起抖音授權登錄請求,抖音用戶允許授權第三方應用後(掃碼確認或賬號密碼授權登錄),確認通過後,會重定向到第三方網站(回調接口)。並且附帶授權臨時票據(code)
-
第三方通過code參數,以及ClientKey和ClientSecret等參數,通過API換取access_token
-
通過access_token進行接口調用,獲取用戶基本信息及其他操作等。
一、註冊賬號
二、創建應用
填寫信息,然後提交,提交之後需要審覈
三、查看應用
在《管理中心》可以查看應用信息
審覈通過之後會得到Client Key和Client Secret,調用接口時需要使用
四、應用詳情
在“接口權限”申請需要使用的權限
在“特殊權限”中申請“靜默授權”,用來獲取用戶的open_id,open_id是用戶在該平臺的唯一標識
五、獲取登錄二維碼
獲取授權碼(code) 請求方式:GET 請求鏈接:https://open.douyin.com/platform/oauth/connect/
|
|||
---|---|---|---|
名稱 | 類型 | 必填 | 說明 |
client_key
|
string | 是 | 應用唯一標識 |
response_type
|
string | 是 |
填寫code Available values : code |
scope
|
string | 是 | 應用授權作用域,多個授權作用域以英文逗號(,)分隔 |
redirect_uri
|
string | 是 | 授權成功後的回調地址,必須以http/https開頭。 |
state
|
string | 否 | 用於保持請求和回調的狀態 |
public function GetLoginQrcode()
{
$url = $this->url . '/platform/oauth/connect';
$redirect_uri = "回調地址";
$scope = "scope";
$url = $url . "?client_key=" . $this->key . "&response_type=code&scope=" . $scope . "&redirect_uri=" . $redirect_uri . "&state=1";
header('Location:' . $url);
exit();
}
用戶允許授權後,將會重定向到redirect_uri的網址上,並且帶上code和state參數
六、獲取用戶公開信息
獲取用戶公開信息 請求方式:GET 請求鏈接:https://open.douyin.com/oauth/userinfo/ |
|||
名稱 | 類型 | 必填 | 說明 |
access_token | string | 是 | 調用/oauth/access_token/生成的token,此token需要用戶授權 |
open_id | string | 是 | 通過/oauth/access_token/獲取,用戶唯一標誌 |
要獲取用戶公開信息,需要先獲取access_token和open_id
獲取access_token和open_id:
獲取用戶公開信息 請求方式:GET 請求鏈接:https://open.douyin.com/oauth/access_token/ |
|||
名稱 | 類型 | 必填 | 說明 |
client_key |
string | 是 | 應用唯一標識 |
client_secret | string | 是 | 應用唯一標識對應的密鑰 |
code | string | 是 | 授權碼。即/oauth/connect/回調時返回的code |
grant_type | string | 是 | 寫死"authorization_code"即可 |
public function get_access_token($code)
{
$url = $this->url . '/oauth/access_token/';
$params = array(
'client_key' => $this->key,
'client_secret' => $this->secret,
'code' => $code,
'grant_type' => 'authorization_code',
);
$data = $this->curl_post($url, $params);
return $data;
}
curl_post方法:https://blog.csdn.net/I_lost/article/details/104518356
返回數據:
根據access_token和open_id獲取用戶信息:
public function getUserInfo($access_token, $openid)
{
$url = $this->url . '/oauth/userinfo/';
$params = array(
'access_token' => $access_token,
'open_id' => $openid
);
$result = $this->curl_post($url, $params);
return $result;
}
返回數據:
公用接口返回數據極少,詳細數據可使用99接口(http://www.99api.com/comm_details?id=2034),但是需付費,且和抖音官方接口返回數據無法判斷是否是同一個用戶。
七、刷新access_token
刷新access_token 請求方式:GET 請求鏈接:https://open.douyin.com/oauth/refresh_token/ |
|||
名稱 | 類型 | 必填 | 說明 |
client_key |
string | 是 | 應用唯一標識 |
refresh_token | string | 是 | 填寫通過access_token獲取到的refresh_token參數 |
grant_type | string | 是 | 填refresh_token |
public function refresh_token($refresh_token)
{
$url = $this->url . '/oauth/refresh_token/';
$params = array(
'client_key' => $this->key,
'grant_type' => "refresh_token",
'refresh_token' => $refresh_token,
);
$result = $this->curl_get($url, $params);
return $result;
}
八、關於access_token和refresh_token的有效期
官方文檔:
當access_token過期(過期時間15天)後,可以通過該接口使用refresh_token(過期時間30天)進行刷新:
1. 若access_token已過期,調用接口會報錯(error_code=10008或2190008),refresh_token後會獲取一個新的 access_token以及新的超時時間。
2. 若access_token未過期,refresh_token不會改變原來的access_token,但超時時間會更新,相當於續期。
3. 若refresh_token過期,獲取access_token會報錯(error_code=10010),此時需要重新走用戶授權流程。