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 會在內部區分使用 LegacyAgent 或 OAuthAgent,但對呼叫端的程式碼並無影響。
該選哪一個?
猶豫時依「目的」區分最易理解。若「應用程式自行運作」則選 App Password;若「使用者進行操作」則選 OAuth。也常見兩者結合的架構,例如通知使用 App Password,使用者登入則使用 OAuth。
參考連結