Skip to content

Conversation

@lsj8706
Copy link
Collaborator

@lsj8706 lsj8706 commented Apr 5, 2023

🌱 작업한 내용

  • 회원가입과 로그인을 하나의 api에서 처리하고 있는데 서버에서 response로 로그인인지 회원가입인지를 보내줍니다. 이를 이용해 회원가입이면 닉네임 입력뷰로 이동시키고 로그인이면 메인뷰로 이동시키도록 했습니다.
  • 소셜 로그인 뷰의 버튼들을 수정했습니다.
  • 자동 로그인 플로우를 구현했습니다.

자동 로그인 및 토큰 갱신 플로우

  1. SplashVC에서 기기에 accessToken이 저장되어 있는지 확인
  2. 있다면 메인뷰로 넘어가도록, 없으면 소셜 로그인 뷰로 이동시키기
  3. 만약 앱 사용중에 accessToken이 만료되었고 이것을 헤더에 담아서 api 통신을 하면 서버에서 statusCode로 401을 줌
  4. Moya의 interceptor (정확히 말하면 Alamofire에서 제공하는 기능)을 이용하여 401을 받았을 때 자동으로 토큰을 갱신하는 getNewToken API 통신 수행하고 성공하면 retry
  5. 토큰이 갱신되었기 때문에 다시 만료 될 때까지 해당 토큰 쭉 사용 만료되면 3번부터 다시 시작
  • 이러한 과정이 자동으로 발생하기 때문에 저희는 더이상 신경 쓸 필요 없을 것 같습니다~!

🌱 PR Point

  • 지금까지 서버 통신을 구현할 때 Router를 만들고 VC에 해당 Router를 담아서 MoyaProvider를 직접 생성하는 방식을 사용했는데 이제는 Providers라는 구조체에 싱글톤으로 미리 각 Router에 대응하는 Provider를 만들어서 필요한 VC에서 곧바로 사용할 수 있도록 했습니다.

image

  • 지금까지 구현한 Router에 대해서는 이미 만들었고 기존에 작성한 Provider도 이 것들로 다 교체했으니까 새롭게 연결할 API들만 대응하면 될 것 같습니다!!

image

  • 이렇게 사용하면 됩니다. (기존 코드들은 싹 다 수정했기 때문에 건들 필요 없습니다.)

  • 사실 싱글톤 패턴은 가능하면 지양하는 것이 좋습니다. 관련 내용들은 한번 검색해보면 좋을거에요. 그럼에도 사용한 이유는 현재 같은 Provider들이 뷰컨 마다 중복되어 선언되어 있었고, 이번에 토큰 갱신을 위해 Interceptor를 추가하면서 Provider를 한곳에서 관리하는 것이 좋을 것 같다고 생각해서 싱글톤을 사용했습니댜. 싱글톤을 피하고 의존성 주입을 통해 이러한 문제를 해결하는 것이 더 좋은 방향이지만 그렇게 하면 러닝커브가 높아집니다. 의존성 주입에 대해서도 공부해보면 좋을거에요!

  • 디자인분들이 코스 발견의 + 버튼을 업로드하기 버튼으로 바꿔달라고 요청해서 이 작업도 살짝 추가해서 했습니다.

  • 직접 본인 기기에 설치해서 로그인도 해보고 자주 들어가서 테스트 해봐주세요! 토큰 갱신이 잘 되는지 확인해봅시다~~!

📸 스크린샷

구현 내용 스크린샷
업로드 하기 버튼 수정 image

📮 관련 이슈

@lsj8706 lsj8706 added Feat 새로운 기능 구현 세진☃️ labels Apr 5, 2023
@lsj8706 lsj8706 self-assigned this Apr 5, 2023
@lee-yeonwoo
Copy link
Collaborator

헐 진짜 꼼꼼하게 썼다 ㅠㅠ 감사합니당 ... 더 꼼꼼히 읽어보겠숩니당

Copy link
Collaborator

@lee-yeonwoo lee-yeonwoo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

바쁠텐데 수고많았습니당...!!

@lee-yeonwoo lee-yeonwoo merged commit 9225169 into Runnect:develop Apr 7, 2023
@lsj8706 lsj8706 deleted the feat/#123-자동로그인 branch April 7, 2023 04:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feat 새로운 기능 구현 세진☃️

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

[Feat] 자동 로그인 구현

2 participants