TodoMate 어플을 참고하여 Wafflemate 어플을 제작했습니다.
기존 앱에 없는 팔로우차단 기능, 시간체크 기능을 추가하여 SNS 기능을 강화하고 일정관리 사용성을 높혔습니다.
친구들과 함께하는 일정관리, 와플메이트!
일정관리와 더불어 팔로우 팔로잉이 가능한 SNS 기능을 제공합니다.
일정/일기 공유를 통해 효과적인 일정관리를 경험하세요.
| 송건우(Gitsgwoo) | 진채연(hzlcodus) | 오동건(ho2921ho) |
- 사용자 로그인 요청 처리 시에 앱의 shared preference에 access token, refresh token, 사용자 정보를 저장합니다.
- 인증 정보를 나타내는 data class AuthInfo 를 만들고 인증 정보를 AuthStorage class의 변수 authInfo에 StateFlow의 형태로 저장합니다.
- 앱의 startdestination을 메인페이지로 설정해놓고, 메인페이지의 lifecycle 중 OnViewCreated 에서 사용자의 authInfo 값이 null인지 확인합니다.
- 값이 null이라면 로그인 요청을 처리하는 중첩그래프 login_graph로 navigate 됩니다.
login_graph : 시작 페이지, 회원가입 페이지, 이메일 인증 페이지, 로그인 페이지로 구성
- retrofit 및 okhttp3의 interceptor 기능을 활용하여 사용자의 access token을 자동으로 Authorization 헤더에 넘겨주는 기능을 추가하였습니다.
- 최초 로그인 또는 재로그인 시에는 access token을 넘겨줄 필요가 없기 때문에 if 문을 통해서 Authorization 헤더에 빈 String을 넘겨주도록 처리했습니다.
- access token의 유효기간이 만료되면 발생하는 401 에러를 catch하여, sharedPreference에 저장된 refresh token을 사용해 access token을 재발급 받도록 했습니다.
- sharedPreference에 재발급된 토큰을 저장한 후 chain 의 Request 객체를 복사해 재발급한 토큰을 헤더에 넣고 다시 요청을 보내도록 했습니다.
- refresh token으로 access token을 재발급하는 로직은 Request.Builder()를 사용해 refreshRequest를 생성하여 OkHttpClient().newCall(refreshRequest).execute()를 통해 직접 서버에 요청을 넘기도록 구성하였습니다.