Come on!使用 Threads API 來自動發文吧

春麗 S.T.E.M.
10 min readJul 16, 2024

目錄

⦿ Threads
⦿ Meta Developer
⦿ 圖形 API 測試工具
⦿ Threads_User_Id
⦿ client_secret
⦿ Long Lived Token
⦿ Container
⦿ 第一步,創建 Container
⦿ 第二步,發佈 Container
⦿ 帶有圖片的文章
⦿ 發佈回覆

Threads
Threads 是 Meta 旗下的一個社群平台,是用來與 Elon Musk 的 X(前身 Twitter)抗衡,從 Instagram 無性生殖分出來的用作 Notes 的現代自媒體工具,念法跟寫程式時用到的線程(Thread)、IoT 產業的 Thread 協議都是同一個字,只是加上 s

Meta 自今年六月釋出 Threads 的 API 後,我們已經可以透過 API 做到一些交互了,這讓自動發文成了可能,下面就是一張透過 API 發文的結果,以及回文的範例。

不多說,下面簡單說明一下如何使用 Threads API 吧!

繼續閱讀|回目錄

Meta Developer

首先,進到 Meta 的開發者網站,早先在 iOS 上測試第三方(Facebook)登入功能時,也寫了一篇文章,參考如下:

所以,第一步是在開發者網站上加入一個新的 APP(應用程式),為了使用 Threads API 而開了一個新的專案

點到我的應用程式 => 建立應用程式 => 不與商家連結後下一步 => 存取 Threads API => 幫APP 取名 => 建立應用程式

接著,點進應用程式的主控版,存取 Threads API。

裡面已經有了基本權限,你可以再打開需要用到的其他權限。

我們點到測試使用案例,開一個新的視窗,開啟圖形 API 測試工具

然後,在應用程式角色的地方新增用戶

加入 Threads 測試人員,如果你登入的 Meta 開發者帳號與 Threads 帳號是一樣的,輸入帳號名即可找到。

此時 Threads 測試人員右側就會變成待確認

點進去網站權限(用瀏覽器操作,非 APP),到邀請的地方選擇接受

好了,初步作業完成!

繼續閱讀|回目錄

圖形 API 測試工具

到了圖形 API 測試工具,先把你的 API 選到 https://graph.threads.net/v1.0,http method 選到 GET。

接著產生 Threads 的 Access Token,這個 Token 要記起來。

Threads_User_Id

在圖型化測試工具下按 submit(提交),這時的 response 為你 THREADS_USER_ID,即是剛才做為 Threads 測試用戶帳號的 ID,將這個號碼記起來。

client_secret

再來,我們到應用程式設定中的基本資料,找到應用程式密鑰

同樣地,將這個密鑰記起來。

Long Lived Token

因為剛才的 Token 不是長時間的 Token,我們不希望做 API 測試時 Token 馬上就無效而需要重新產生,所以這邊必須先取得長時間的 Token。

curl -i -X GET "https://graph.threads.net/access_token?grant_type=th_exchange_token&client_secret=<THREADS_APP_SECRET>&access_token=<SHORT_LIVED_ACCESS_TOKEN>"

這裡的 client_secretaccess_token 我們都有了,所以你要代入自己剛拿到的,那麼,在 Postman 中這樣設定,endpoint url 是 https://graph.threads.net/access_token

會拿到如下資訊,這個 Long Lived Token 一樣要記起來!

{
"access_token": "Long Lived Token",
"token_type": "bearer",
"expires_in": 5184000
}

好了,到這邊為止,所有前置作業完成,下面就真正是 API 的交互了。

繼續閱讀|回目錄

Container

在 Single Threads Post 中,會有兩個步驟,第一個要用 POST /{threads-user-id}/threads 這個 endpoint,第二個要用 POST /{threads-user-id}/threads_publish這個 endpoint。

你必須創建一個 Container,塞入你的媒體訊息,再發佈這個 Container。

第一步,創建 Container

首先,在https://graph.threads.net/v1.0/Threads_User_Id/threads 這個 endpoint 需放入前面透過 API 取得的 User ID。

接著是媒體訊息類型、媒體訊息,以及 Long Lived Token,Postman 如下:

在 http 交互中,由於是 Post,所以我們把參數放到 Body 去,讓 Postman 看起來更整潔,又或者使用 Terminal 的 curl:

curl -i -X POST \
"https://graph.threads.net/v1.0/Threads_User_Id/threads" \
-F "media_type=TEXT" \
-F "text=Hello World." \
-F "access_token=Long Lived Token"

這時 Response 取得的 id 即是 Container ID

第二步,發佈 Container

接著,在 https://graph.threads.net/v1.0/Threads_User_Id/threads_publish 這個 endpoint,同樣需放入 User ID。

而 creation_id 則是前一個 API 返回的 Container ID,在 Terminal 的 curl 設置如下:

curl -i -X POST \
"https://graph.threads.net/v1.0/Threads_User_Id/threads_publish" \
-F "creation_id=Container_ID" \
-F "access_token=Long Lived Token"

最後,返回的 id 則是此篇文章Post的 ID

這時你就會看到你的文章出現在 Threads 公開頁面中了。

帶有圖片的文章

接著,我們來試試帶有圖片的文章吧,回到第一個步驟,創建 Container,在 Postman 中如下:

或是用 curl:

curl -i -X POST \
"https://graph.threads.net/v1.0/Threads_User_Id/threads" \
-F "media_type=IMAGE" \
-F "image_url=http://where.image.is" \
-F "text=Hello World." \
-F "access_token=Long Lived Token"

image_url 要放圖片的 url,至於哪些 url 合法,哪些不合法就再自行測試囉,同樣地,第一個步驟的 Container ID 記起來,帶到第二個步驟去,然後就可以去你的 Threads 收穫結果了。

繼續閱讀|回目錄

發佈回覆

在回覆的地方,官方文件就講得很清楚,先看如何使用 curl:

curl -X POST \
-F "media_type=<MEDIA_TYPE>" \
-F "text=<TEXT>" \
-F "reply_to_id=<THREADS_ID>" \
-F "access_token=<ACCESS_TOKEN>" \
"https://graph.threads.net/v1.0/me/threads"

由於回覆也會考慮 Media Type,所以第一個步驟也類同創建 Container,Response 為 creation_id,接著再發佈這個 Container。

創建 Container 的地方在 Postman 裡:

由於只是要用 TEXT 回覆,這裡的 media_type 就是 TEXT,text 裡則擺放你要擺放的內容,reply_to_id 則是欲回覆的文章 ID。

Response 的 ID 拿到後,再回到前面發佈 Container 那一步。

在 curl 裡:

curl -i -X POST \ 
"https://graph.threads.net/v1.0/<THREADS_USER_ID>/threads_publish?creation_id=<MEDIA_CONTAINER_ID>&access_token=<ACCESS_TOKEN>"

在 Postman 裡:

接著就可以到文章看看成果了。

好了!完成了!

這次就分享到這,感謝您的閱讀。

繼續閱讀|回目錄

Reference:

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

春麗 S.T.E.M.
春麗 S.T.E.M.

Written by 春麗 S.T.E.M.

Do not go gentle into that good night, Old age should burn and rave at close of day; Rage, rage, against the dying of the light.

No responses yet

Write a response