Laravel Bluesky は2種類の認証方法をサポートします。認証後の API 呼び出しは両方法で共通です。
LegacyAgent という命名は「OAuth 以前の認証方式」を意味しますが、App Password 自体は廃止予定ではありません。通知や自動投稿など、ユーザー操作を伴わない場面では App Password の方がシンプルで適しています。
アーキテクチャ
BlueskyManager は Facade Bluesky の実体です。login() または withToken() でエージェントを設定し、その後の API 呼び出しはどちらの認証方法でも同じメソッドを使います。
App Password (LegacyAgent)
認証フロー
Bluesky::login()
.env に App Password を設定して login() を呼ぶだけです。
LegacySession の再利用
毎回 login() を呼ぶと毎回 API リクエストが発生します。セッションをキャッシュして再利用するとより効率的です。
LegacySession の主なキー
適したユースケース
- バックグラウンドジョブ・キュー処理での自動投稿
- Laravel Notification チャンネルを使った通知
- バッチ処理・スケジューリング
- アプリケーション自身のアカウントで投稿する場合
OAuth (OAuthAgent)
認証フロー
Bluesky::withToken()
Socialite で取得した OAuthSession を withToken() に渡します。
バックグラウンドジョブや Console でも、DB に保存した値から OAuthSession を組み立てられます。
OAuthSession の主なキー
OAuth の refresh_token は1回しか使えません。OAuthSessionUpdated イベントを使って、トークン更新後は必ず DB を更新してください。詳細は Socialite を参照してください。
適したユースケース
- Socialite を使ったユーザーログイン
- ユーザーの代わりに API を呼び出す操作
- ユーザーごとに異なるアカウントで操作が必要な場合
認証後の API 呼び出しは共通
どちらの認証方法でも、withToken() の後は同じ API メソッドを使います。
BlueskyManager は内部で LegacyAgent または OAuthAgent を使い分けますが、呼び出し側のコードには影響しません。
どちらを選ぶべきか
迷ったときは目的で分けるのが一番わかりやすいです。「アプリが自分で動く」なら App Password、「ユーザーが操作する」なら OAuth です。両方を組み合わせることも可能で、通知には App Password を使い、ユーザーログインには OAuth を使うという構成もよく見られます。
参考リンク