[내일배움캠프] 네번째 프로젝트를 마무리하며
벌써 네번째 프로젝트도 끝이 났다. 이제 마지막 최종프로젝트만을 남겨두고 있다.
이번 프로젝트는 유튜브 미디어 앱을 구현하는 것이 목표였다.
Youtube Data API v3을 활용하여 여러 동영상 목록들을 출력해야 했는데, 팀 회의를 통해 선정된 기능이 마침 OAuth 2.0 인증을 필요로 하는 기능이었다. 만만하게 보고 시작했던 기능이 4일씩이나 시간을 잡아먹을 줄 누가 알았겠는가.
또한, 이번 프로젝트에는 MVVM 아키텍처를 전 팀원이, 프로젝트 전체에 적용하는 것을 목표로 잡았다.
어려웠던 만큼 배운 것도 많았고 뿌듯함 역시 컸던 프로젝트라고 생각된다.
첫 발표를 맡아 마지막날까지 긴장감을 놓을 수 없었던 이번 프로젝트 역시 KPT 방법론을 활용하여 회고를 기록해보려고 한다.
K(Keep) - 유지할 부분
- 해결되지 않는 문제에 있어 여러 튜터님께 조언을 구하며 해결을 해냈다.
- 슬랙 단체 방을 활용하여 팀 회의와 PR, 그리고 막히는 문제들에 대한 기록을 남겼다.
P(Problem) - 문제점 및 해결방안
- Github 의 Issue 기능을 처음 사용하다보니 제대로 활용 할 줄 몰라, 생성했다가 삭제하는 반복 과정을 많이 겪었다.
> 이번 프로젝트를 계기로 추후 사용할 때 실수하지 않도록 사용 방법을 확실하게 익혀야겠다.
- MVVM 아키텍쳐가 아직 익숙치 않아, 코드 분리를 잘 못했다는 아쉬움이 든다.
> 주말동안 클린 아키텍처에 대한 공부를 더 해서 최종프로젝트에 확실하게 적용할 수 있도록 할 예정이다.
T(Try) 및 Feel - 앞으로의 노력 및 느낀점
- 내가 아닌 다른사람에게 설명을 하기 위해서 정확한 정보를 알고 있는 것이 중요하다는 것을 느꼈다.
- 첫 발표를 나름 성공적으로 마침으로서, 팀 프로젝트를 진행함에 있어 전달하고자 하는 내용들을 모두 전달할 수 있었던 것 같다.
+ OAuth 2.0 인증 관련하여 4일간의 해결과정을 담아보려고 한다.
문제사항
- 구독리스트 API 호출 중 특정 매개변수 사용에 있어 인증된 요청만이 사용 가능한 상황 > OAuth 2.0 인증 필수
시도 및 해결
- Header 값으로 보낼 Authorization 키의 Token 값을 불러오려는 시도
1. Android Client ID 를 사용하여 Token 값을 받아왔지만 null 값이 들어옴
> Web Application Client ID 로 변경하여 Token 값을 받아오는데 성공했지만, 이 토큰 값을 사용하여 Retrofit 통신을 해보니 HTTP 401 Error 발생 (Invalid authentication credentials Error)
> 해당 Client ID 로 받아온 값은 Token 값이 아닌 Account 값이었음
> Account 값을 다시 구글 서버로 보낸 후, AccessToken 과 RefreshToken 을 받아와야 하는 상황 (별도로 파이어베이스나 서버를 사용하지 않기 때문에 쉽지 않음)
2. (성공) 별도의 서버 없이 안드로이드에서 Token 값을 받기 위해서 GoogleAuthUtil 사용
- MainActivity에서 AccessToken 값을 받아오려고 하니 java.lang.IllegalStateException: calling this from your main thread can lead to deadlock E/GoogleAuthUtil 에러 발생
> 네트워크 작업은 비동기로 처리해야 하기 때문에 GlobalScope 를 사용하여 해결은 했지만 이는 권장되는 방법이 아님
> ViewModel 로 코드를 분리하여 viewmodelScope 을 사용하여 토큰 값 받아오는데 성공
느낀점
- 서버 없이 구현을 했기 때문에 RefreshToken 을 받아오지 못함.
> 현재 AccessToken 이 만료되면 다시 로그인하여 Token 값을 받아와야 한다는 문제점 존재
> 추후 이 기능을 다시 사용하게 된다면 서버 구현까지도 고려해보면 좋겠다는 생각을 함
확실히 최종프로젝트 직전의 마지막 과정인만큼, 단순 기능 구현이 아닌 아키텍쳐도 도입해보고 코드 가독성 그리고 성능도 고려한 코드를 작성하기 위한 노력을 많이 했던 것 같다.
추석 연휴도 껴있었음에도 불구하고, 연휴고 주말이고 할 것 없이 몰두했던 프로젝트라고 자신한다.
그만큼 완성도 있게 마무리했고 해보고자 하는 기능에 대해 타협없이 도전했고 해결해나가며 많은 것을 배운 프로젝트였다.
아래 링크들은 이번 프로젝트의 Figma, Notion, 그리고 Github 주소이다.
- Figma (와이어프레임)
Figma
Created with Figma
www.figma.com
- Notion
12조 프로젝트 S.A.
🎈관련 링크
teamsparta.notion.site
- Github
GitHub - sinw212/My-Media
Contribute to sinw212/My-Media development by creating an account on GitHub.
github.com