벌써 네번째 프로젝트도 끝이 났다. 이제 마지막 최종프로젝트만을 남겨두고 있다.
이번 프로젝트는 유튜브 미디어 앱을 구현하는 것이 목표였다.
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
'기타 > 내일배움캠프' 카테고리의 다른 글
[내일배움캠프] 세번째 프로젝트를 마무리하며 (4) | 2023.09.16 |
---|---|
[내일배움캠프] 두번째 프로젝트를 마무리하며 (11) | 2023.08.30 |
[내일배움캠프] 첫번째 프로젝트를 마무리하며 (0) | 2023.07.23 |
[내일배움캠프] Android 앱 개발 과정 합격 (0) | 2023.07.18 |