Skip to main content

概觀

Laravel Bluesky 支援兩種認證方式。認證後的 API 呼叫在兩種方式下皆相同。
LegacyAgent 的命名意指「OAuth 之前的認證方式」,但 App Password 本身並未被廢止。在通知或自動貼文等不需使用者操作的情境中,App Password 更為簡單且適用。

架構

BlueskyManager 是 Facade Bluesky 的實體。使用 login()withToken() 設定 agent 後,兩種認證方式後續的 API 呼叫都使用相同的方法。

App Password (LegacyAgent)

認證流程

Bluesky::login()

只要在 .env 中設定 App Password 並呼叫 login() 即可。

LegacySession 的重複使用

每次呼叫 login() 都會發出 API 請求。將 session 快取後重複使用會更有效率。

LegacySession 的主要鍵

適合的使用情境

  • 於背景 job、佇列處理中的自動貼文
  • 使用 Laravel Notification 頻道發送通知
  • 批次處理、排程
  • 以應用程式自身的帳號進行貼文

OAuth (OAuthAgent)

認證流程

Bluesky::withToken()

將透過 Socialite 取得的 OAuthSession 傳入 withToken()
在背景 job 或 Console 中,也可以從 DB 儲存的值組合出 OAuthSession

OAuthSession 的主要鍵

OAuth 的 refresh_token 只能使用一次。請透過 OAuthSessionUpdated 事件,在 token 更新後務必更新 DB。詳情請參考 Socialite

適合的使用情境

  • 使用 Socialite 的使用者登入
  • 代替使用者呼叫 API 的操作
  • 每位使用者需以不同帳號操作的情境

認證後 API 呼叫皆共通

無論採用哪種認證方式,withToken() 之後都使用相同的 API 方法。
BlueskyManager 會在內部區分使用 LegacyAgentOAuthAgent,但對呼叫端的程式碼並無影響。

該選哪一個?

猶豫時依「目的」區分最易理解。若「應用程式自行運作」則選 App Password;若「使用者進行操作」則選 OAuth。也常見兩者結合的架構,例如通知使用 App Password,使用者登入則使用 OAuth。

參考連結

最後修改於 2026年8月2日