Threads APIを利用した投稿テスト

Python
スポンサーリンク

Threadsへのテスト投稿をPythonで実装する方法を解説します。Threads APIを利用して投稿する手順を具体的に説明します。
X APIに比べると利用までにやることが煩雑ですが、初心者の方でもわかるように図を多用して解説しました。
最初にまとめを読む方が良いかもしれません。

Pythonから投稿するリクエストの大まかな仕組みとしては、
Python → Threads APIを利用するアプリ(本解説中の名前はThreadsPostApp) → Threads API
となります。


Meta開発者アカウントの準備

Threads APIを利用するには、Metaの開発者アカウントが必要です。以下の手順で進めます。

1. Facebookアカウントの作成

Threads APIを利用するには、Metaの開発者アカウントが必要であり、その前提としてFacebookアカウントが必要になります。

  • Facebookアカウントを作成する
  • メールアドレスを確認する
  • 本人確認情報(電話番号や身分証など)を準備する

これについては様々なサイトで説明されているので、そちらを確認ください。


開発者登録

開発者アカウントを登録し、アプリを作成する流れです。

2. 開発者登録

Threads APIを使うにはMetaの開発者登録をする必要があります。
この手順について説明していきます。
全体的にサイトの応答が遅めなので、反応が無くても暫く様子みてください。

(1)Meta for Developersにアクセス

Meta for Developers にアクセスします。
登録の入り口が分かりづらいですが、右上のGet Startedをクリックします。


(2)Register

Metaの開発アカウント登録の開始です。
ブラウザ内でFacebookが既に立ち上がっている場合は、直ぐに開始に移行するようです。
(ネタ写真なので恥ずかしくてぼかしてます💦)


(3)Verify account

本人確認をするために認証番号が携帯に送られてきます。そのための電話番号を入力します。
携帯電話番号を入力します。最初の0を省略せずにそのまま入力します。
※例:080-1234-5678。81-80-1234-5678では無いことに注意してください。


登録した携帯電話のSMSに認証番号が送られてくるので入力します。


(4)Contact info

Facebookで登録しているメールアドレスが表示されているので確認し、チェックボタンを押してConfirm Emailをクリックします。
メールアドレスが変わっている場合は、Update Emailを押して登録しなおしてください。


(5)About you

どの種類の利用者として登録するか確認されます。
Developerを選んでください。

Complete Resistrationを押せば登録完了です。


3. アプリの作成(ThreadsAPIを利用するためのMeta内のアプリ)

開発者アカウントを作成したら、Threads APIを利用するためのアプリを作成します。

(1)アプリ(API)の作成

全くアプリが存在しないため、アプリの作成をする必要があります。
「アプリの作成」をクリックします。

再度「アプリを作成」をクリックします。


(2)アプリの詳細(アプリ名の決定)

アプリ名を決めます。
この例ではThreadsPostAPPとしました。分かる名前にしてください。
後からでも名前は変更できます。


(3)ユースケース(目的の確認)

何をする目的なのか聞いてくるので「Threads APIにアクセス」をクリックし、次へを押して進みます。


(3)ビジネス(ビジネスポートフォリオへのリンク有無の確認)

ビジネスポートフォリオ(Meta Business Portfolio)をリンクするかどうかを選択するステップです。

ビジネスポートフォリオとは?

  • Metaの「ビジネスポートフォリオ」とは、複数のアセット(Facebookページ、Instagramアカウント、広告アカウント、アプリなど)を管理するためのビジネス管理機能のこと。
  • 企業や開発者がAPIを利用して広告運用やデータ分析を行う際に便利。

個人開発など、ビジネス管理が不要な場合は「現時点ではビジネスポートフォリオをリンクしない。」にチェックを入れて次へ進みます。


(4)仕上げる(利用規約と開発ポリシーの同意確認)

必要な入力は終わり、利用規約と開発者ポリシーの確認になります。
「ダッシュボードに移動」を押すと同意したとみなされます

パスワードを聞かれるので、入力するとダッシュボードへと移動します。
サイトの反応が遅いので注意してください


アプリ設定

4. アプリ情報の確認と設定

開発者ダッシュボードを使って設定していきます。
繰り返しますが、サイトの反応が遅いので注意してください。

アプリIDの取得

「アプリのカスタマイズと要件」の「Threads APIにアクセス」を押します。
(画像は最初に取り忘れたので、緑のチェックになっています。)


画面が切り替わるので左側の「Threads APIにアクセス」の下の「設定」をクリックします。


「設定」により右側の表示が変わります。
ThreadsアプリIDとThreadsのapp secretが表示されます。
ThreadsアプリIDは、ThreadsAPIを利用する際に、どのアプリがリクエストを送っているかを示すために使われます。
App Secretはパスワードのようなもので、APIリクエストの署名や認証に使われます。
外部に漏れないよう注意してください。(GitHubや公開リポジトリに載せない!)
個人でThreadsAPIを利用したテストをする場合は2つとも使いません。

また、アプリ名の変更は、ここで出来ます。

個人でテストする場合は、コールバックURLを記入しなくても大丈夫です。


コールバックURLが不要なケース

自分のアカウントだけでテスト環境を使う場合

  • Threads APIの「ユーザートークン生成ツール」を使うなら、コールバックURLなしでアクセストークンを取得可能
  • Meta開発者サイト内で直接トークンを発行できるので、リダイレクト処理が不要。

手動でアクセストークンを取得し、APIリクエストを送る場合

  • Meta開発者ツールで生成したトークンを手動で使うなら、OAuthのリダイレクト処理は必要ない。

コールバックURLが必要なケース

複数ユーザーにAPIを提供する場合

  • 他のユーザーがThreads APIを使う場合は、OAuth認証が必要
  • ユーザーが認可した後にトークンを受け取るため、コールバックURLが必須

自動化のためにOAuthフローを組む場合

  • 長期トークンの更新などをスクリプトで自動化する場合は、OAuthの処理を組み込むことが一般的。
  • その場合、コールバックURLを指定する必要あり。

アカウント連携

Threads APIを利用するには、Threadsのアカウントと連携する必要があります。

先ほど作成したアプリにアカウントを紐づける作業となります。
この作業が全体工程の中で一番煩雑になっています。
個人の場合、管理者とテスト参加者の二役を演じる必要があるためです。
(本来は認証された複数が参加するアプリを想定したシステム設計となっています)

5. Threadsアカウント連携

作成したアプリにThreadsアカウントをThreadsテスターとして追加していきます。
流れとしては、
Metaの開発者サイトからThreadsアカウントを追加→Threadsで承認
となります。

(1)Threadsアカウント連携作業

ThreadsアプリIDなどを確認した画面の下の「Threadsテスターを追加」を押します。


「アプリの役割」という画面に変わります。青くハイライトしている「メンバーを….」を押します。
(Metaは、ところどころ日本語になっていなかったり、ボタン内に文字が入っていなかったりと日本語環境はあまり力を入れていないように見えます。サイトの反応も遅いので開発者向けサイトは予算が無いのかもしれませんね。)


アプリを使用するアカウントの役割を割当ます。「Threadsテスター」を選択します。

Threadsのユーザーネームを入れて検索し、自分のアカウントを追加してください。


アカウントを追加すると管理者(アプリを追加したFacebookアカウント)とThreadsを運用しているアカウント(Threadsテスター)が一覧に表示されます。

(2)Threads側での承認

開発者サイトでアカウントを追加した後は、Threadsでの承認作業になります。
ブラウザの別タブなどでThreadsにログインします。
左側メニューの一番下の「もっと見る」を押すとメニューダイアログが出ます。
「設定」を押します。


「アカウント」タブに切り替えます。
一覧中の「ウェブサイトのアクセス許可」をクリックします。


「招待」タブに自分で作ったアプリ名(今回の場合はThreadsPostAPP)でThreadsアカウントが追加されたことにより、Threadsアカウント側に招待が届いています。
「同意する」を押します。

これでThreads側の作業は一旦終わりです。再度、Meta開発者サイトへと戻ります。


6.アクセストークンの取得

Pythonから作成したアプリ(今回の例ではThreadsPostApp)へと投稿などのリクエストをする際には、ユーザーIDとアクセストークンが必要になります。

ユーザーIDは開発者サイトでは分からないので、アクセストークンを取得していきます。


Meta開発者サイトに戻り、左側のメニューから「ユースケース」を選択します。
「Threads APIにアクセス」の右側にある「カスタマ…」をクリックします。


左側にある「Threads APIにアクセス」の下の「設定」を押します。
画面下側にThreadsアカウントが表示されます。その中の「アクセストークンを生成」を押します。

開発者サイトでの作業は終わり、Threadsでの作業に移ります。


ブラウザの別のタブなどでThreadsに戻ります。
下記画面がポップアップされます。(ブラウザのポップアップブロックを解除しておく必要があります。)

「(Threadsアカウント名)として続行」を押します。


下記モーダルウインドウがポップします。
アクセストークンが表示されるので、必ずコピーして保管をしてください
「理解しました」にチェックをし、「Done」を押します。

これでアクセストークン取得までの作業は終了です。

次はお待ちかねのPythonの作業に移ります。


Pythonでの作業

さあ、これでThreadsへ投稿だと思った貴方!
Metaはそんなに甘くはありません!

ここでもう一仕事。User IDを取得する作業が必要です。
開発者サイトではUser IDを直接確認できません。管理者の負担軽減のための仕様と思われますが、利用者にとっては不便な仕様です。

7.PythonによるUser ID取得

上で作ったアプリ(例:ThreadsPostAPI)にUser IDを問い合わせるコードです。

requestsライブラリをインストールしていない場合は

pip install requests

でインストールしてください。

import requests

def get_instagram_user_id(access_token):
    url = 'https://graph.instagram.com/me'
    params = {'access_token': access_token}
    
    response = requests.get(url, params=params)
    return response.json()['id']

# アクセストークンを使用
user_id = get_instagram_user_id('your_access_token') //アクセストークンを入力
print(user_id)

コンソールにUser IDが表示されるので、コピーして保管してください。
このUser ID問い合わせをThreadsへの投稿テストのコードに組み込むのも手です。


8.Threadsへの投稿

いよいよThreadsへの投稿です。

Threadsのデータベースに書き込むためのコミットを意識した設計となっています。
X APIとは違い、投稿送信、投稿確定送信(コミット)の2回の通信が必要です。

①投稿送信によるクリエーションIDの取得(データベースのレコードのIDがレスポンスとして返ってくるイメージ)

②クリエーションIDを送信し、投稿を確定(データベースにコミットを送る)

Threadsへの投稿コードです。

import requests

def post_to_threads(user_id, access_token, message):
    url = f'https://graph.threads.net/v1.0/{user_id}/threads'

    headers = {
        'Authorization': f'Bearer {access_token}',
        'Content-Type': 'application/json'
    }
    
    payload = {
        'text': message  ,
        'media_type': 'TEXT'
    }
    
    #投稿によるクリエーションID取得
    response = requests.post(url, headers=headers, json=payload)
    creation_id= response.json()
        
    print("creation_id:", creation_id)

    #投稿をコミット
    url = f'https://graph.threads.net/v1.0/{user_id}/threads_publish'
    payload = {'creation_id': creation_id['id']}

    response = requests.post(url, json=payload, headers=headers)
    print("response:", response.json())

# 使用例
user_id = 'your_id' //調べたUser IDを代入
access_token = 'your_access_token' //アクセストークンを代入
message = 'テスト投稿です!'

post_to_threads(user_id, access_token, message)

実行するとコンソールには、この様に出力されます。(各idは今回の例)

creation_id: {'id': '17908699926096536'}
response: {'id': '17963766932747171'}

長い格闘の末、テスト投稿できました。


まとめ

Threads APIを利用するには、①Meta開発者アカウントの準備から始め、②アプリの設定やアカウント連携を経て、③Pythonコードを用いた投稿までの一連の流れが必要です。

特に以下の点に注意してください:

  • Metaの開発者サイトの応答が遅いため、一瞬フリーズしたように見えても焦らず待つ。
  • Threadsアカウント連携は最も手間がかかる部分なので、正しく設定しているか確認しながら進める。
  • アクセストークンやApp Secretの管理を厳重に行い、GitHubや公開環境に漏れないよう注意する。
  • APIリクエストは2段階(投稿送信→投稿確定)であることを忘れず、適切な処理を行う。

開発の際にエラーが発生した場合は、APIのレスポンスを確認し、必要な権限が設定されているかを見直してください。

コメント

タイトルとURLをコピーしました