얼마 전부터 저희 번개장터에서는 유튜브 동영상을 통해 상품을 소개할 수 있는 기능을 제공하고 있습니다. 이 글에서는 저희와 마찬가지로 YouTube API를 활용한 기능을 구현하실 분들을 위한 약간의 가이드를 적어볼까 합니다.
국내 1위 모바일 중고장터앱으로 누적 다운로드 170만건의 개인간거래 서비스입니다. (소개: http://quicket.kr/apps)
v3을 사용한다면 구글에서 제공하는 클라이언트 라이브러리를 활용하여 직접 http 통신을 해야하는 번거로움을 덜 수 있습니다. (http://code.google.com/p/
앱 등록
API를 사용하기 위해서 Developer Key를 발급받아야 합니다. 이 키는 앞으로 API 요청을 할때마다 헤더에 포함해주어야 합니다. 아래 주소에서 개발자 등록 및 제품 등록을 하면 해당 제품에 대한 Developer Key를 발급받을 수 있습니다.
https://code.google.com/apis/
youtube/dashboard
API v3의 경우 https://developers.google.
사용자 인증 (Authentication)
번개장터는 유튜브에 영상을 업로드하는데, 이러한 기능을 위해서는 유튜브에 대한 사용자 인증이 필요합니다. 인증 메커니즘은 OAuth 2.0을 사용합니다.
http://developer.android.com/
google/play-services/index. html
액세스 토큰을 요청할때는 다음과 같은 식으로 합니다.
GoogleAuthUtil.getToken(
context, accountName, scope);
이 때, 예외 처리가 반드시 필요한 부분이 있는데,
- Play services를 이용할수 없는 경우(설치 되지 않았거나 구버전?)
- 토큰을 처음 요청하는 경우
이렇게 두 가지 입니다. Play services가 설치되지 않았으면 설치 안내를 해 주어야 하고, 토큰 요청을 처음 하는 경우에는 사용자로 부터 권한 확인 과정을 거쳐야 합니다. 이러한 상황이라면 getToken 메소드 호출시 예외가 발생하게 되어 있으며, 이를 잡아 처리할 수 있습니다. 아래 문서에 나온 예제를 보시면 무슨 얘긴지 바로 아실겁니다. 🙂
http://developer.android.com/
reference/com/google/android/ gms/auth/GoogleAuthUtil.html
YouTube 채널 개설
토큰도 받았겠다, 이제 동영상을 올려보려 하니 에러가 나는군요. 충격과 공포의 401 NoLinkedYouTubeAccount 입니다. (v3 역시 에러코드는 다를지언정, 유사한 에러가 있을 겁니다)
… 저희도 다시 바꿔야겠습니다.
그 밖의 난관들
채널 개설 과정까지 무사히 처리했다면 이제 API를 사용하는데 있어 직접적인 어려움은 없을 것이라 생각됩니다. 다만 이제는 앱을 만들면서 나타날수 있는 일반적인 난관들이 기다리고 있는데…
– 예외 처리
아무래도 네트워크 작업들이 많다보니 수많은 예외 상황에 대해서 신경을 써야 합니다. 일반적인 IOException 처리, 액세스 토큰이 유효하지 않을 때의 처리, status code에 따른 처리 등등이 필요합니다. 어렵다기보단 번거롭고 신경이 많이 쓰이는 과정입니다. 설령 클라이언트 라이브러리를 사용한다고 해도 결국 예외 처리는 따로 해주지 않을 수 없습니다. 이는 물론 유튜브 뿐 아니라 어떤 API라도 마찬가지구요. 🙂
– UI 흐름
또한 일련의 과정들이 무언가 선조건을 가지는 경우가 있고, 해당 과정을 실행해보지 않으면 선조건이 충족 되어있는지 알 수 없는 경우가 있습니다. 이런 상황에선 UI 흐름을 제어하는 것이 복잡해질 수 있습니다.
번개장터를 예로 들면, 영상을 올리기 위해서 액세스 토큰이 필요합니다. 액세스 토큰을 얻어오려면 당연히 계정을 선택해야겠죠. 그러나 해당 계정에 대한 액세스 토큰을 처음 요청하는 경우에는 사용자로부터 권한 확인을 받는 과정도 한 번 거쳐야 합니다.