57
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

公式 TikTok API でできること/取得できるデータまとめ

Posted at

はじめに

TikTok APIについて調べていたところ、
公式じゃない方のリポジトリやその使い方がたくさん出てきたので、
公式である方をまとめちゃいました〜!

ついでにdevelopersアカウントも取得できちゃったので、
方法とか紹介していきます。

取得できるデータは思ったよりも多く、一見の価値はあると思います!

目次

  • 公式ドキュメント
  • 取得できるデータ
  • developers登録手順
  • アクセストークン取得方法

公式ドキュメント

こちらをメインにまとめていきます。

マーケティングAPIというのもあります。
※今回はこちらの紹介はしません。

取得できるデータ

大きく分けて5種類

  • Login Kit
  • Sound Kit(この記事では紹介しません)
  • Video Kit(この記事では紹介しません)
  • Embed Videos
  • WebHooks

Login Kit

分岐して以下のデータが取れる

  • User Info
  • Video List
  • Video Query
  • Manage User Access Tokens(get&refresh&revoke access token)
  • Login Kit with QR Code(この記事では紹介しません)

User Info

ユーザーに関する情報を取得できる。詳細はコチラから

取得できるデータ

key 詳細
open_id string 現在のアプリケーションにおけるユーザーの固有ID
union_id string 同じ開発者の異なるアプリ間で、ユーザーを一意に識別するためのID
avatar_url string ユーザーのプロフィール画像のURL
avatar_url_100 string ユーザーのプロフィール画像(100×100サイズ)のURL
avatar_url_200 string ユーザーのプロフィール画像(200×200サイズ)のURL
avatar_large_url string ユーザーのプロフィール画像を高解像度で表示できるURL
display_name string ユーザーのプロフィール名

リクエストパラメータ

key 詳細
open_id string TikTokユーザの一意な識別子で、/oauth/access_token/で取得
access_token string TikTokユーザの認可を表すトークンで、/oauth/access_token/を通じて取得
fields string user/info/で取得できるフィールドのセット。上記の取得できるデータのkeyを埋め込む

エラー

key 詳細
code int32 エラーコード
message string 原因を説明するエラーメッセージ

sample request

curl -L -X POST 'https://open-api.tiktok.com/user/info/' \
-H 'Content-Type: application/json' \
--data-raw '{
    "access_token": "act.1a4b9d05d9ad1a56294b93b5609cdfbdNzQgbpbUWyFNvhC9QqIvKEjuuPHn",
    "open_id": "723f24d7-e717-40f8-a2b6-cb8464cd23b4",
    "fields": ["open_id", "union_id", "avatar_url", "display_name"]
}'

(success)sample response

{
    "data": {
        "user": {
            "open_id": "723f24d7-e717-40f8-a2b6-cb8464cd23b4",
            "union_id": "12345678-e717-40f8-a2b6-abcdefghijkl",
            "avatar_url": "https://hoge.com/hoge/hogehoge.webp?hogehoge",
            "display_name": "sample_user",
        }
    },
    "error": {
        "code": 0,
        "message": ""
    }
}

Video List

対象のユーザーが投稿した動画を取得できる。詳細はコチラから

POST+bodyでリクエストするパターンと、GET+クエリストリングでリクエストするパターンがあります。
取得できるデータとしてはPOST+bodyの方が多かったので、今回はそちらを使います。

取得できるデータ

key 詳細
create_time int64 TikTok動画が投稿された時刻のUTC UnixTime(秒単位)
cover_image_url string 動画のカバー画像のCDNリンク。画像は静止。信頼と安全に関するポリシーにより、このリンクのTTLは6時間
share_url string TikTok動画のシェア可能なリンク。モバイル端末とデスクトップ端末では挙動が異なるので注意
video_description string クリエイターがTikTok動画に設定した説明文
duration int32 TikTok動画の再生時間(秒)
height int32 TikTok動画の高さ
width int32 TikTok動画の横幅
id string TikTok動画の一意な識別子
title string 動画のタイトル
embed_html string 動画の埋め込み用html
embed_link string 動画の埋め込みリンク
like_count int32 動画の「いいね!」数
comment_count int32 動画のコメント数
share_count int32 動画のシェア数
view_count int64 動画の再生回数

リクエストパラメータ

key 詳細
open_id string TikTokユーザの一意な識別子で、/oauth/access_token/で取得
access_token string TikTokユーザの認可を表すトークンで、/oauth/access_token/を通じて取得
cursor int64 ページネーション用のカーソル。has_moreがtrueの場合、次のリクエストにcursorを渡すと、次のページの結果が得られる
max_count int32 各ページから返されるビデオの最大数。デフォルトは10。最大値は20
fields string video/list/ で取得できるフィールドのセット。上記の取得できるデータのkeyを埋め込む

エラー

key 詳細
code int32 エラーコード
message string 原因を説明するエラーメッセージ
log_id string ログデータをトレースするためのログID

sample request

curl -L -X POST 'https://open-api.tiktok.com/video/list/' \
-H 'Content-Type: application/json' \
--data-raw '{
    "access_token": "act.1a4b9d05d9ad1a56294b93b5609cdfbdNzQgbpbUWyFNvhC9QqIvKEjuuPHn",
    "open_id": "723f24d7-e717-40f8-a2b6-cb8464cd23b4",
    "cursor": 0,
    "max_count": 10,
    "fields": ["embed_html", "embed_link", "share_count"]
}'

(success)sample response

{
    "data": {
        "videos": [
            {
                "embed_html": "<blockquote class=\"tiktok-embed\" cite=\"https://www.tiktok.com/@hogehoge/video/hogehoge?hogehoge" data-video-id=\"hoge\" style=\"hoge" > <section> <a target=\"_blank\" title=\"@hogehoge\" href=\"https://www.tiktok.com/@hoge\">@hoge</a> <p><a title=\"hoeeee\" target=\"_blank\" href=\"https://www.tiktok.com/tag/hogehoge\">#hogeee</a> <a title=\"pogee\" target=\"_blank\" href=\"https://www.tiktok.com/tag/hogehoge\">#poeee</a></p> <a target=\"_blank\" title=\"hoeeee\" href=\"https://www.tiktok.com/music/poeeee\">poeeee</a> </section> </blockquote> <script async src=\"https://www.tiktok.com/embed.js\"></script>",
                "embed_link": "https://www.tiktok.com/embed/v2/ueeeee",
                "share_count": 20
            }
        ],
        "cursor": 1633013437000,
        "has_more": false
    },
    "error": {
        "code": 0,
        "message": ""
    }
}

Video Query

対象のユーザーが投稿した動画のIDを指定することで動画情報を取得できる。詳細はコチラから

Video Listと取得できるデータは同じですが、取得方法として video_ids を指定しています。

取得できるデータ

key 詳細
create_time int64 TikTok動画が投稿された時刻のUTC UnixTime(秒単位)
cover_image_url string 動画のカバー画像のCDNリンク。画像は静止。信頼と安全に関するポリシーにより、このリンクのTTLは6時間
share_url string TikTok動画のシェア可能なリンク。モバイル端末とデスクトップ端末では挙動が異なるので注意
video_description string クリエイターがTikTok動画に設定した説明文
duration int32 TikTok動画の再生時間(秒)
height int32 TikTok動画の高さ
width int32 TikTok動画の横幅
id string TikTok動画の一意な識別子
title string 動画のタイトル
embed_html string 動画の埋め込み用html
embed_link string 動画の埋め込みリンク
like_count int32 動画の「いいね!」数
comment_count int32 動画のコメント数
share_count int32 動画のシェア数
view_count int64 動画の再生回数

リクエストパラメータ

key 詳細
open_id string TikTokユーザの一意な識別子で、/oauth/access_token/で取得
access_token string TikTokユーザの認可を表すトークンで、/oauth/access_token/を通じて取得
filter object フィールド指定。未来系で指定できるfield増えるんかな。今は一つ。
video_ids: set<string> 一度に最大 20 個のビデオ ID を指定できる
fields string video/query/ で取得できるフィールドのセット。上記の取得できるデータのkeyを埋め込む

エラー

key 詳細
code int32 エラーコード
message string 原因を説明するエラーメッセージ
log_id string ログデータをトレースするためのログID

sample request

curl -L -X POST 'https://open-api.tiktok.com/video/query/' \
-H 'Content-Type: application/json' \
--data-raw '{
    "access_token": "act.1a4b9d05d9ad1a56294b93b5609cdfbdNzQgbpbUWyFNvhC9QqIvKEjuuPHn",
    "open_id": "723f24d7-e717-40f8-a2b6-cb8464cd23b4",
    "filters": {
        "video_ids": ["6948568030997662982"]
    },
    "fields": ["embed_html", "embed_link"]
}'

sample response

{
    "data": {
        "videos": [
            {
                "embed_html": "<blockquote class=\"tiktok-embed\" cite=\"https://www.tiktok.com/@hogehoge/video/hogehoge?hogehoge" data-video-id=\"hoge\" style=\"hoge" > <section> <a target=\"_blank\" title=\"@hogehoge\" href=\"https://www.tiktok.com/@hoge\">@hoge</a> <p><a title=\"hoeeee\" target=\"_blank\" href=\"https://www.tiktok.com/tag/hogehoge\">#hogeee</a> <a title=\"pogee\" target=\"_blank\" href=\"https://www.tiktok.com/tag/hogehoge\">#poeee</a></p> <a target=\"_blank\" title=\"hoeeee\" href=\"https://www.tiktok.com/music/poeeee\">poeeee</a> </section> </blockquote> <script async src=\"https://www.tiktok.com/embed.js\"></script>",
                "embed_link": "https://www.tiktok.com/embed/v2/ueeeee"
            }
        ],
        "cursor": 0,
        "has_more": false
    },
    "error": {
        "code": 0,
        "message": ""
    }
}

Access Token

認可コードのコールバックが処理されると、そのコードを使用してユーザーのアクセストークンを取得できる。詳細はコチラから

取得できるデータ

key 詳細
open_id int64 TikTokのユーザー固有の識別子
scope string ユーザーが認可することに同意したスコープをカンマ(,)区切りで指定
access_token string 今後、ユーザーの代わりに呼び出すためのアクセストークン
expires_in string access_tokenの有効期限(秒)。最初の付与から24時間有効
refresh_token int32 access_tokenをリフレッシュするためのトークン。有効期限は初期付与から365日間
refresh_expires_in int32 refresh_tokenの有効期限(秒)

〈〈 クエリストリング 〉〉 のリクエストパラメータ

key 詳細
client_key string パートナーに提供される固有の識別キー
client_secret string パートナーに提供されるユニークなIDシークレット
code string Web/iOS/Android 認証コールバックから取得した認証コード
grant_type string この値は常にauthorization_codeとして設定

sample request

curl -L -X GET 'https://open-api.tiktok.com/oauth/access_token/?client_key=abcdefghijklmnop&client_secret=abcdefghijklmnopqrstu&code=abcdefghijklmnopqrstuvwxyz&grant_type=authorization_code'

sample response

{
    "data": {
        "access_token": "act.1a4b9d05d9ad1a56294b93b5609cdfbdNzQgbpbUWyFNvhC9QqIvKEjuuPHn",
        "captcha": "",
        "desc_url": "",
        "description": "",
        "error_code": 0,
        "expires_in": 86400,
        "log_id": "20220207AAAAAAAAAABBBBBBBBBBCCCCCC",
        "open_id": "723f24d7-e717-40f8-a2b6-cb8464cd23b4",
        "refresh_expires_in": 31536000,
        "refresh_token": "rft.2b138a0dca4d8cdf0e2413d789347cedD4KibQjWrbWEM3imrgqpZnu3GKsy",
        "scope": "user.info.basic,video.list"
    },
    "message": "success"
}

Refresh Access Token

取得したaccess_tokenは24時間以内に失効するが、ユーザーの同意なしにリフレッシュ可能。詳細はコチラから

取得できるデータ

key 詳細
open_id string パートナー向けのユーザーID
scope string ユーザーが認可することに同意したスコープをカンマ(,)区切りで指定
access_token string 今後、ユーザーの代わりに呼び出すための新しいトークン
expires_in string アクセストークンの有効期限(秒)
refresh_token string access_tokenをリフレッシュするためのトークン
refresh_expires_in string refresh_tokenの有効期限(秒)

〈〈 クエリストリング 〉〉 のリクエストパラメータ

key 詳細
client_key string パートナーに提供される固有の識別キー
grant_type string この値は常にauthorization_codeとして設定
refresh_token string oauth/access_token/エンドポイントから受け取ったユーザーのrefresh_token

sample request

curl -L -X GET 'https://open-api.tiktok.com/oauth/refresh_token/?client_key=abcdefghijklmnop&grant_type=refresh_token&refresh_token=rft.2b138a0dca4d8cdf0e2413d789347cedD4KibQjWrbWEM3imrgqpZnu3GKsy'

sample response

{
    "data": {
        "access_token": "act.1a4b9d05d9ad1a56294b93b5609cdfbdNzQgbpbUWyFNvhC9QqIvKEjuuPHn",
        "captcha": "",
        "desc_url": "",
        "description": "",
        "error_code": 0,
        "expires_in": 86400,
        "log_id": "20220207AAAAAAAAAABBBBBBBBBBCCCCCC",
        "open_id": "723f24d7-e717-40f8-a2b6-cb8464cd23b4",
        "refresh_expires_in": 31536000,
        "refresh_token": "rft.2b138a0dca4d8cdf0e2413d789347cedD4KibQjWrbWEM3imrgqpZnu3GKsy",
        "scope": "user.info.basic,video.list"
    },
    "message": "success"
}

Revoke Access Token

ユーザーが対象のアプリケーションとTikTok連携を解除したい場合、access_tokenを取り消すことで、TikTok内の「アプリの権限を管理」ページで対象のアプリケーションが非表示になる。詳細はコチラから

取得できるデータ

key 詳細
error_code string エラーコード
description string エラーコードの詳細

〈〈 クエリストリング 〉〉 のリクエストパラメータ

key 詳細
open_id string TikTokユーザーの一意な識別子。/oauth/access_token/ユーザーの一意なトークンを介して取得
access_token string TikTokユーザーの認証を担うトークン。/oauth/access_token/ このトークンにはユーザーの認証が必要

sample request

curl -L -X GET 'https://open-api.tiktok.com/oauth/revoke/?open_id=723f24d7-e717-40f8-a2b6-cb8464cd23b4&access_token=act.1a4b9d05d9ad1a56294b93b5609cdfbdNzQgbpbUWyFNvhC9QqIvKEjuuPHn'

sample response

{
    "data": {
        "captcha": "",
        "desc_url": "",
        "description": "",
        "error_code": 0,
        "log_id": "20220207AAAAAAAAAABBBBBBBBBBCCCCCC"
    },
    "message": "success"
}

Embbed URL

Embedded Videosは、TikTokのビデオを記事やウェブサイトに埋め込むことができる。※承認系は不必要。

Embedded for developers

プログラム上では、oEmbed API を使用して、TikTok のビデオ URL を埋め込みビデオ マークアップに変換することができる。これにより、提供されたウェブページのリンクに関連付けられたビデオの埋め込みコードと追加情報を取得できる詳細はコチラから

sample request

https://www.tiktok.com/oembed?url=https://www.tiktok.com/@scout2015/video/6718335390845095173

sample response

{
  "version": "1.0",
  "type": "video",
  "title": "Scramble up ur name & I’ll try to guess it😍❤️ #foryoupage #petsoftiktok #aesthetic",
  "author_url": "https://www.tiktok.com/@scout2015",
  "author_name": "Scout & Suki",
  "width": "100%",
  "height": "100%",
  "html": "<blockquote class=\"tiktok-embed\" cite=\"https://www.tiktok.com/@scout2015/video/6718335390845095173\" data-video-id=\"6718335390845095173\" style=\"max-width: 605px;min-width: 325px;\" > <section> <a target=\"_blank\" title=\"@scout2015\" href=\"https://www.tiktok.com/@scout2015\">@scout2015</a> <p>Scramble up ur name & I’ll try to guess it😍❤️ <a title=\"foryoupage\" target=\"_blank\" href=\"https://www.tiktok.com/tag/foryoupage\">#foryoupage</a> <a title=\"petsoftiktok\" target=\"_blank\" href=\"https://www.tiktok.com/tag/petsoftiktok\">#petsoftiktok</a> <a title=\"aesthetic\" target=\"_blank\" href=\"https://www.tiktok.com/tag/aesthetic\">#aesthetic</a></p> <a target=\"_blank\" title=\"♬ original sound - 𝐇𝐚𝐰𝐚𝐢𝐢𓆉\" href=\"https://www.tiktok.com/music/original-sound-6689804660171082501\">♬ original sound - 𝐇𝐚𝐰𝐚𝐢𝐢𓆉</a> </section> </blockquote> <script async src=\"https://www.tiktok.com/embed.js\"></script>",
  "thumbnail_width": 720,
  "thumbnail_height": 1280,
  "thumbnail_url": "https://p16.muscdn.com/obj/tos-maliva-p-0068/06kv6rfcesljdjr45ukb0000d844090v0200010605",
  "provider_url": "https://www.tiktok.com",
  "provider_name": "TikTok"
}

Webhooks

Webhookは、TikTokでイベントが発生したときに、コールバックURL経由でアプリケーションに通知するサブスクリプション。API経由で情報を引き出す必要があるのではなく、Webhookを使うことで発生したイベントの情報を取得することができる。通知は、Developer Portal でアプリに設定したコールバック URL に JSON 形式で HTTPS POST で配信される。この情報は、システムの更新やビジネスプロセスのトリガーに利用できる。

Webhook events

Webhookを使うと、イベントを購読して、イベントが発生したときに通知を受け取ることができる。詳細はコチラから

取得できるデータ

key 詳細
client_key string パートナーに提供される固有の識別キー
event string イベント名
create_time string イベントが発生した時刻。UTCエポックタイムが秒単位で表示
user_openid string TikTokユーザーの一意な識別子。/oauth/access_token/を通じて取得
content string イベント情報(以下のreason keyも含まれる)のJSON文字列をシリアライズしたもの
reason string 0 = 不明
1 = ユーザーがTikTokアプリから切断された場合
2 = ユーザーアカウントが削除された
3 = ユーザーの年齢が変わった
4 = ユーザーアカウントが使用禁止になった
5 = デベロッパーの権限剥奪

sample request①

{
    "client_key": "bwo2m45353a6k85",
    "event": "authorization.removed",
    "create_time": 1615338610,
    "user_openid": "act.acv4fasd234asd1c123124asda",
    "content": "{\"reason\": 1 }"
}

sample request②

{
    "client_key": "bwo2m45353a6k85",
    "event": "video.upload.failed",
    "create_time": 1615338610,
    "user_openid": "act.acv4fasd234asd1c123124asda",
    "content":"{\"share_id\":\"video.6974245311675353080.VDCxrcMJ\"}"
}

sample request③

{
    "client_key": "bwo2m45353a6k85",
    "event": "video.publish.completed",
    "create_time": 1615338610,
    "user_openid": "act.acv4fasd234asd1c123124asda",
    "content":"{\"share_id\":\"video.6974245311675353080.VDCxrcMJ\"}"
}

Check the signature

これは実際に試していないので、読んだ解釈を載せております。誤認であればご教授いただきたいです。

TikTokのWebhookは、送信先のサーバーが、そのベントが第三者や悪意のあるシステムではなく、TikTokから来たものであることを確認するための署名付きで送信される。各ウェブフックイベントを処理する前に、ウェブフック消費者がこれらの署名を検証することは強くお勧め。

中間者攻撃やリプレイ攻撃からアプリケーションを保護するために、アプリケーションに送信されるメッセージの署名を検証する必要がある。このタイムスタンプは署名されたペイロードの一部であるため、攻撃者は署名を無効化せずにタイムスタンプを変更することはできない。署名は有効だがタイムスタンプが古すぎる場合、アプリケーションにペイロードを拒否させることができる。

署名はTikTok-Signatureとしてヘッダに含まれる。

Example of TikTok-Signature

"Tiktok-Signature": "t=1633174587,s=18494715036ac4416a1d0a673871a2edbcfc94d94bd88ccd2c5ec9b3425afe66"

Signature Verification

step1. ヘッダーからタイムスタンプと署名を抽出

ヘッダを文字を区切り文字として分割し、要素のリストを取得し。次に、各要素を = 文字をセパレータとして分割し、接頭辞と値のペアを取得。
プレフィックスの値tはタイムスタンプに、sはシグネチャに対応する。

上記の例で言う以下の部分
1. t=1633174587,s=18494715036ac4416a1d0a673871a2edbcfc94d94bd88ccd2c5ec9b3425afe66
2. {"t": 1633174587, "s": "18494715036ac4416a1d0a673871a2edbcfc94d94bd88ccd2c5ec9b3425afe66"}
step2. 署名生成

signed_payloadは、連結して作成することができる。

  • 文字列としてのタイムスタンプ
  • .
  • 実際のJSONペイロード(リクエストボディ)

client_secretをkey、signed_payloadをメッセージとして、SHA256ハッシュ関数によるHMACが計算されます。

説明で言っていることは多分こうゆうこと
1. 取得できたデータのペイロードに含まれるcreate_time(?) → "1633174587"
2. 文字列の.を生成 → "."
3. 取得できたデータのペイロード → {"hoge":"hoge"}
4. 上記3つの文字列を連結 → "1633174587.{"hoge":"hoge"}" → "signed_payload"
5. パートナーに提供されるユニークなIDシークレット(client_secret)をkey、signed_payloadをmessageとしてHMAC-SHA256でhash化
step3. 署名生成

ヘッダ中の署名と生成された署名を比較。両者が等しい場合、現在のタイムスタンプとヘッダーの受信タイムスタンプの差を計算。この差分が許容範囲内かどうかを判断するために使用。

説明で言っていることは多分こうゆうこと
1. HMAC-SHA256でhash化したものと、リクエストのヘッダーに載ってる`Tiktok-Signature`を比較
2. 自分のサーバーでタイムスタンプを生成 & ペイロードに存在するタイムスタンプと比較して許容範囲なら
3. それは正しいwebhookと判定する

developers登録手順

公式のTikTok APIを使うにはメールアドレス登録とアプリの認証が必要となります。

メールアドレス登録

  1. https://developers.tiktok.com/ へアクセス
  2. 右上のLog inをクリック
  3. Log inモーダルが表示されるので、Sign upへ移動
  4. メールアドレスを入力して、メールを送信する
  5. メールに書かれているpin codeを入力して本人確認を行う
  6. 完了!

アプリの認証

アプリの認証ありきのAPIになるので、申請が必要になります。

アプリの画像と名前を登録

右上の My appsから [Connect a new app]を押します。

スクリーンショット 2022-02-08 12.09.35.png

すると、画像と名前を登録する欄が出てくるので、これを登録します。

スクリーンショット 2022-02-08 12.12.17.png

アプリの詳細情報を入力

  1. Platformを選択(必須): Web or Mobile
  2. App Name(必須): アプリの名前
  3. Description(必須): アプリの詳細(例: 色々なことを発信・実践していくサイトで僕は通った)
  4. Category(必須): サービスのカテゴリ
  5. Official website(必須): アプリのオフィシャルウェブサイト
  6. Privacy Policy(必須): アプリのプライバシーポリシーが載っているリンク
  7. Term of Service(必須): 利用規約が載っているリンク
  8. Callback URL: Webhookを飛ばす先
  9. Redirect Domain(必須): localhostでは通らない。〜.comを書いてください。
  10. Permission: user.info.basic(必須), share.sound.create, video.list, video.upload
  11. Reason for using(必須): 使う理由。「このAPIを試したかったから」的なニュアンスで英語書いたら通った。
  12. これで後日、申請が通ったら、晴れて「Client Key」と「Client Secret」が手に入る!

アクセストークン取得方法

ユーザーのアクセストークンを取得しない限り、ユーザーに関する情報を取得できません。詳細はコチラ

リダイレクトURLでユーザーに対象のアプリを承認してもらう

  • client key: hoge
  • client secret: hoge_secret
  • scope: user.info.basic,video.list
  • redirect_uri: https://sample.com

例えば上記の条件だとすると、

https://open-api.tiktok.com/platform/oauth/connect/?client_key=hoge8&scope=user.info.basic,video.list&response_type=code&redirect_uri=https://sample.com&state=random_namoziretsu

response_type=codeは必須。
state=random_namoziretsuはcsrfのために使うので各々で定義してください。

そして上記のリンクにアクセスしてもらえるように、ボタンを作ってあげます。

すると以下の画面へ遷移します!

スクリーンショット 2022-02-07 17.51.48.png

そしてアクセスを許可してもらえると、以下のようなリンクにユーザーがリダイレクトされます。

https://sample.com/?code=hugahugahuga&scopes=user.info.basic%2Cvideo.list&state=random_namoziretsu

そして、リダイレクトでリクエストが来るクエリパラメータのcodeを使って、
アクセストークンを取得します。

先程のAccess Tokenの章で話した通り、以下のようにGETを叩きます。詳細はAccess Tokenの章をご参照ください。

https://open-api.tiktok.com/oauth/access_token/?client_key=hoge&client_secret=hoge_secret&code=hugahugahuga&grant_type=authorization_code

すると以下のようにaccess_tokenが得られるはずです!

{
    "data": {
        "access_token": "act.1a4b9d05d9ad1a56294b93b5609cdfbdNzQgbpbUWyFNvhC9QqIvKEjuuPHn",
        "captcha": "",
        "desc_url": "",
        "description": "",
        "error_code": 0,
        "expires_in": 86400,
        "log_id": "20220207AAAAAAAAAABBBBBBBBBBCCCCCC",
        "open_id": "723f24d7-e717-40f8-a2b6-cb8464cd23b4",
        "refresh_expires_in": 31536000,
        "refresh_token": "rft.2b138a0dca4d8cdf0e2413d789347cedD4KibQjWrbWEM3imrgqpZnu3GKsy",
        "scope": "user.info.basic,video.list"
    },
    "message": "success"
}

さいごに

楽しいTikTok Lifeをお過ごしください!

57
29
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
57
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?