일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 테스트 주도 개발론
- 인코딩방지
- 객체 지향 설계
- 다트 테스트
- 8시간 삽질
- SOLID 원칙
- dart
- Android
- 2D 그래픽 라이브러리
- 플러터 테스트
- Parameter specified as non-null is null
- widget test
- 배움순서
- TDD 개발 방법론
- dart test
- 안드로이드
- Refresh Tocken
- Same parameter
- pubspec
- 에러 메시지를 잘보자 ^^
- retorift
- pubspec.yaml
- 안드로이드를 위한
- 2D graphics library
- Flutter
- permission_handler
- 토큰갱신
- 다트
- refresh 토큰
- 플러터
Archives
- Today
- Total
Landroid
[Android] Interceptor로 토큰 갱신하기 본문
보통 토큰을 사용하기 위해서
Access 토큰이 리소스에 접근하고
Refresh 토큰이 Access 토큰을 갱신하도록 만들어야 합니다.
Refresh로 토큰을 갱신하는 방법 중에는 Workmanager나 Interceptor 등이 있는데
이번 시간에는 Interceptor로 토큰을 갱신하는 방법을 알아보겠습니다.
Interceptor란?
우리가 클라이언트와 서버 사이에서 통신을 합니다. interceptor 해당 네트워크 통신을 하는 중간에 요청과 응답을 보내거나 받거나 간섭하는 역할을 수행합니다.
TMI
interceptor에는 크게 두 가지가 있는데, Application Interceptor와 Network Interceptor가 있습니다.
Interceptor로 응답 확인
internal class AuthInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response { .... }
....
}
Interceptor는 인터페이스로 내부에 intercept라는 메서드를 포함하고 있습니다.
그리고 우리는 intercept라는 녀석을 가지고 요청과 응답 정보를 확인할 수 있습니다.
다시 돌아와서 refresh 토큰으로 access 토큰이 갱신되려면
먼저 access 토큰이 만료가 되야겠죠? access 토큰이 만료해서 401 에러를 일으킨다고 가정하면
intercept에서 응답이 401일 때 refresh 토큰으로 access 토큰이 갱신하시면 되겠습니다.
이제 이걸 코드로 나타내면 다음과 같습니다.
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request();
val response = chain.proceed(request);
when (response.code()) {
400 -> {
//Show Bad Request Error Message
}
401 -> {
//Show UnauthorizedError Message
}
403 -> {
//Show Forbidden Message
}
404 -> {
//Show NotFound Message
}
// ... and so on
}
return response
}
이렇게 만들어주셨으면은 이제 OkHttpClient에 addIntercept로 추가해주시면 됩니다.
val builder = OkHttpClient().newBuilder()
.addInterceptor(AuthInterceptor())
참 쉽죠?
Reference
'안드로이드' 카테고리의 다른 글
Postman에서 같은 이름의 파라미터를 Retrofit에서 구현하는 방법 (0) | 2020.11.13 |
---|---|
SearchView, 속성 사용법 (2) | 2020.10.31 |
Parameter specified as non-null is null 해결 (0) | 2020.10.24 |
TextView 안에 #붙은 단어에만 스팬 적용하기 (0) | 2020.10.17 |
Retrofit 응답 상태 관리 (0) | 2020.10.10 |
Comments