Laravel Bluesky는 두 가지 인증 방식을 지원합니다. 인증 이후의 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은 한 번밖에 사용할 수 없습니다. OAuthSessionUpdated 이벤트를 사용하여 토큰 갱신 후에는 반드시 DB를 업데이트하세요. 자세한 내용은 Socialite를 참조하세요.
적합한 사용 사례
- Socialite를 사용한 사용자 로그인
- 사용자를 대신하여 API를 호출하는 조작
- 사용자별로 다른 계정으로 조작해야 하는 경우
인증 이후의 API 호출은 공통
두 인증 방식 모두 withToken() 이후에는 동일한 API 메서드를 사용합니다.
BlueskyManager는 내부에서 LegacyAgent 또는 OAuthAgent를 나눠 사용하지만, 호출 측 코드에는 영향을 주지 않습니다.
어느 쪽을 선택해야 하는가
망설여질 때는 목적별로 나누는 것이 가장 알기 쉽습니다. “앱이 스스로 동작”한다면 App Password, “사용자가 조작”한다면 OAuth입니다. 두 가지를 조합하는 것도 가능하며, 알림에는 App Password를 사용하고 사용자 로그인에는 OAuth를 사용하는 구성도 자주 볼 수 있습니다.
참고 링크