YouTube Data API에는 현재 크게 안정 버전인 v2과 개발 버전인 v3으로 나뉩니다.
다행히 Google Play services client library를 이용하면 번거로운 인증 과정을 건너뛸 수 있습니다. :) SDK Manager의 Extras 항목아래에서 'Google Play services'를 설치후 사용하면 됩니다. 관련 문서는 아래 페이지를 확인하세요.
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를 사용했었는데, 지금 다시 확인 해보니 불과 몇주 사이에 deprecated 처리 돼버렸군요. :( 현재 문서에서는 WebView를 통해 채널 개설 페이지를 띄워주는 방법을 권하고 있으며, 그 내용이 아래 페이지에 나와있습니다.
https://developers.google.com/youtube/create-channel
... 저희도 다시 바꿔야겠습니다.
그 밖의 난관들
채널 개설 과정까지 무사히 처리했다면 이제 API를 사용하는데 있어 직접적인 어려움은 없을 것이라 생각됩니다. 다만 이제는 앱을 만들면서 나타날수 있는 일반적인 난관들이 기다리고 있는데...
- 예외 처리
아무래도 네트워크 작업들이 많다보니 수많은 예외 상황에 대해서 신경을 써야 합니다. 일반적인 IOException 처리, 액세스 토큰이 유효하지 않을 때의 처리, status code에 따른 처리 등등이 필요합니다. 어렵다기보단 번거롭고 신경이 많이 쓰이는 과정입니다. 설령 클라이언트 라이브러리를 사용한다고 해도 결국 예외 처리는 따로 해주지 않을 수 없습니다. 이는 물론 유튜브 뿐 아니라 어떤 API라도 마찬가지구요. :)
- UI 흐름
또한 일련의 과정들이 무언가 선조건을 가지는 경우가 있고, 해당 과정을 실행해보지 않으면 선조건이 충족 되어있는지 알 수 없는 경우가 있습니다. 이런 상황에선 UI 흐름을 제어하는 것이 복잡해질 수 있습니다.
번개장터를 예로 들면, 영상을 올리기 위해서 액세스 토큰이 필요합니다. 액세스 토큰을 얻어오려면 당연히 계정을 선택해야겠죠. 그러나 해당 계정에 대한 액세스 토큰을 처음 요청하는 경우에는 사용자로부터 권한 확인을 받는 과정도 한 번 거쳐야 합니다.