抖音授權登錄並獲取用戶公開信息

抖音官方文檔:https://open.douyin.com/platform/doc/OpenAPI-oauth2

抖音的官方文檔和接口及其隨意。。。。

調用流程包括:

  1. 第三方發起抖音授權登錄請求,抖音用戶允許授權第三方應用後(掃碼確認或賬號密碼授權登錄),確認通過後,會重定向到第三方網站(回調接口)。並且附帶授權臨時票據(code)

  2. 第三方通過code參數,以及ClientKey和ClientSecret等參數,通過API換取access_token

  3. 通過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),此時需要重新走用戶授權流程。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章