★★★★★
#데이터·Firebase·보안 · claude-code
인증 토큰 만료 처리 (자동 갱신)
{{APP_NAME}}에서 백엔드 API와 통신할 때, accessToken이 만료될 수 있어. 만료된 토큰으로 요청하면 401 에러.
#authentication#oauth#tokens#security
변수 1개 — 여기 채우면 아래 프롬프트에 바로 들어가요
{{APP_NAME}}에서 백엔드 API와 통신할 때, accessToken이 만료될 수 있어. 만료된 토큰으로 요청하면 401 에러.
패턴 (OAuth 2.0 refresh token):
1. 로그인 → accessToken (단기, 예: 1시간) + refreshToken (장기, 예: 7일)
2. API 요청 → 401 에러
3. refreshToken으로 새 accessToken 발급
4. 재시도
구현:
- TokenService 클래스로 토큰 관리 (로컬 저장: Secure Storage)
- HTTP Interceptor로 자동 갱신
- 동시 요청 시 한 번만 갱신 (race condition 방지)
- refreshToken도 만료 시 → 다시 로그인
코드 예시:
```dart
Future<String> getValidToken() async {
if (_isTokenExpired()) {
await _refreshAccessToken();
}
return _accessToken;
}
```
주의사항:
- refreshToken 저장 위치 (Secure Storage vs SharedPreferences)
- 만료 시간 계산 (서버 시간 vs 로컬 시간 sync)
- 네트워크 끊김 시 처리
- iOS/Android 권장 사항
각 플랫폼의 Secure Storage 라이브러리 비교, 로그아웃 → 모든 토큰 삭제, 다중 디바이스에서의 token revocation까지 알려줄래?
쓰는 법 — 위 칸에 본인 값을 채우면 아래 프롬프트에 바로 반영돼요. 복사 버튼을 누르면 채워진 그대로 클립보드에 담기니까, claude-code(또는 본인이 쓰는 AI)에 붙여넣기만 하면 됩니다. 변수가 없으면 그냥 복사해서 쓰세요.

