Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refact/modify token operation #77

Open
wants to merge 13 commits into
base: Refact/modify_token_operation
Choose a base branch
from

Conversation

sh1mj1
Copy link
Contributor

@sh1mj1 sh1mj1 commented Oct 3, 2023

Header 에 access token 을 hasAuthorization 분기 없이 넣어주기

  • API 서비스 인터페이스에서 직접 Header 에 access token 을 넣어주는 동작을
    Interceptor 에서 넣어주는 것으로 변경함.
  • 이제 Interceptor 는 헤더에 토큰 앞에 Bearer 를 넣어주는 동작과 함께 직접 access token 을 넣어주는 동작도 수행함.

Header 에 sign token 을 넣어주는 인터셉터 생성.

  • SignUp 동작 시에 헤더에 sign token 을 넣어주므로
    MemberApi 에서 회원 가입 동작을 하는 api 두개를
    SignUpApi 라는 서비스 인터페이스를 추가해서 분리함.
  • 그에 따라 Repository, DataSource 도 분리함.
  • ApiModuleNetworkModule 에서 해당 인터셉터를 사용하도록 추가해줌.
    (provideSignUpRetrofit provideSignUpClient provideSignUpAuthorizationInterceptor 등 추가)
  • 카카오톡 로그인으로 받아온 sign Token 을 로컬에 저장하는 것으로 변경해서 인터셉터에서 토큰을 넣어줄 수 있도록 변경.

Result 변경 사항

safeApiHelperImpl 에서 사용하는 onSuccess 함수는 코틀린 패키지의 Result 클래스의 함수임.
이에 대해서 저희가 만든 sealed class Result 와 혼동되어 ApiResult 로 이름 변경

SafeApiHelper 변경 사항

일반적인 Api 호출 이후에 401 에러가 발생하면 ApiResult 의 throwable 에 InvalidAccessToken 을 가지도록 만듦.
그리고 getSafe 함수의 마지막에 apiResult 가 Failure 이며 InvalidAccessToken 이면 같은 api 를 재호출하도록 만듦.
기존에는 아래처럼 재호출되지 않는 문제가 발생했었음.
https://tv.kakao.com/v/441288590
getSafe 메서드의 길이가 너무 길어서 가독성 문제가 우려되어 메서드를 분리함.

AuthClient 와 AuthorizationInterceptor 의 의존성 제거

AuthApi 가 호출하는 모든 api 는 헤더에 추가적인 내용이 필요 없음.
그래서 헤더에 토큰을 넣어주는 AuthorizationInterceptor 와 의존성을 가질 필요가 없어서 제거.
image

TokenAuthenticator 의 불필요한 분기 제거

객체 의존성 그림을 잘 보면 Refresh Token 으로 토큰을 갱신하는 역할을 하는 TokenAuthenticator 에 의존하는 객체는 오직 BabaClient 입니다.
즉, 의존성 구조 상 토큰을 갱신해야 해서 호출하는 AuthApi 에 의해서 다시 TokenAuthenticator 가 호출될 수가 없음.
isPathRefresh 라는 변수를 사용해서 무한 루프를 방지하고자 하는 부분도 필요없는 분기 코드임. 이를 제거

BabaRetrofit 과 RefreshTokenRetrofit 의 중복 코드 메서드 분리

  • provideBabaRetrofit 과 RefreshTokenRetrofit 은 완전히 함수의 바디가 같다.
  • 이에 대해서 하나의 함수로 분리함.

@sh1mj1 sh1mj1 self-assigned this Oct 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant