기타/내일배움캠프

[내일배움캠프] 네번째 프로젝트를 마무리하며

sinw212 2023. 10. 8. 20:06

벌써 네번째 프로젝트도 끝이 났다. 이제 마지막 최종프로젝트만을 남겨두고 있다.

 

이번 프로젝트는 유튜브 미디어 앱을 구현하는 것이 목표였다.

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