前置作業
首先,前往 Meta 開發者平台,建立一個應用程式。例如:
- 應用程式名稱:
post-bot
- 新增使用案例:「存取 Threads API」
- 商家:「我還不想連結商家資產管理組合」
完成後,點選「建立應用程式」按鈕。
新增測試人員
點選「應用程式角色」頁籤,點選「新增用戶」,點選「Threads 測試人員」,輸入自己的 Threads 帳號用戶名稱,最後點選「新增」。
設定 Threads 存取權限
進到 Threads 平台,點選「設定」,點選「帳號」,點選「網站權限」,點選「邀請」,接受來自應用程式 post-bot
的存取請求。
測試
回到 Meta 開發者平台,點選「測試」頁籤,點選「開啟 GraphQL API 測試工具」按鈕。
將 Meta 應用程式指定為 post-bot
,點選「Generate Threads Access Token」按鈕,即可取得一個暫時性的存取令牌。
點選提交,響應如下:
1 2 3 4
| { "id": "29361808173406421", "name": "Memo Chou" }
|
取得使用者資訊
使用 GraphQL API 測試工具,設定請求參數:
- HTTP Method:
GET
- API Endpoint:
graph.threads.net/v1.0/me?fields=id,name
提交後,響應如下:
1 2 3 4
| { "id": "29361808173406421", "name": "Memo Chou" }
|
使用 cURL 測試:
1 2
| curl -i -X GET \ "https://graph.threads.net/v1.0/me?fields=id%2Cname&access_token=your-access-token"
|
建立貼文草稿
使用 GraphQL API 測試工具,設定請求參數:
- HTTP Method:
POST
- API Endpoint:
graph.threads.net/v1.0/me/threads
設定請求內容:
1 2 3 4
| { "media_type": "TEXT", "text": "Hello" }
|
提交後,響應如下:
1 2 3
| { "id": "18050739080235480" }
|
使用 cURL 測試:
1 2
| curl -i -X POST \ "https://graph.threads.net/v1.0/me/threads?media_type=TEXT&text=Hello&access_token=your-access-token"
|
發布貼文
使用 GraphQL API 測試工具,設定請求參數:
- HTTP Method:
POST
- API Endpoint:
graph.threads.net/v1.0/me/threads_publish
設定請求內容:
1 2 3
| { "creation_id": "18050739080235480" }
|
提交後,響應如下:
1 2 3
| { "id": "18286053724221534" }
|
使用 cURL 測試:
1 2
| curl -i -X POST \ "https://graph.threads.net/v1.0/me/threads_publish?creation_id=18051387608469145&access_token=your-access-token"
|
實作
首先,使用 export
指令將 Access Token 設定為環境變數。
1
| export THREADS_API_ACCESS_TOKEN=
|
取得使用者資訊
建立 get_me.py
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import http.client import os import urllib.parse
host = "graph.threads.net" endpoint = "/v1.0/me" params = { "access_token": os.getenv("THREADS_API_ACCESS_TOKEN"), "fields": "id,name", }
url = f"{endpoint}?{urllib.parse.urlencode(params)}"
conn = http.client.HTTPSConnection(host) conn.request("GET", url)
response = conn.getresponse()
body = response.read().decode() print(body)
conn.close()
|
執行程式。
響應如下:
1
| {"id":"29361808173406421","name":"Memo Chou"}
|
建立貼文草稿
建立 post_threads.py
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| import http.client import os import urllib.parse
host = "graph.threads.net" endpoint = "/v1.0/me/threads" params = { "access_token": os.getenv("THREADS_API_ACCESS_TOKEN"), "media_type": "TEXT", "text": "Hello", }
url = f"{endpoint}?{urllib.parse.urlencode(params)}"
conn = http.client.HTTPSConnection(host) conn.request("POST", url)
response = conn.getresponse()
body = response.read().decode() print(body)
conn.close()
|
執行程式。
響應如下:
1
| {"id":"17870058945336724"}
|
發布貼文
建立 post_threads_publish.py
檔。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import http.client import os import urllib.parse
host = "graph.threads.net" endpoint = "/v1.0/me/threads_publish" params = { "access_token": os.getenv("THREADS_API_ACCESS_TOKEN"), "creation_id": "your-creation-id", }
url = f"{endpoint}?{urllib.parse.urlencode(params)}"
conn = http.client.HTTPSConnection(host) conn.request("POST", url)
response = conn.getresponse()
body = response.read().decode() print(body)
conn.close()
|
執行程式。
1
| python post_threads_publish.py
|
響應如下:
1
| {"id":"17974440899705152"}
|
檢查 Threads 應用程式,查看貼文是否已發布貼文。
程式碼
參考資料