ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유튜브(Youtube) API - 2.사전작업
    소프트웨어개발 이야기 2020. 2. 10. 10:50

    앞서 유튜브 API - 시작하기 글에서 유튜브 API의 종류와 제공 기능에 대해서 간단히 살펴봤다. 본 글에서는 본격적으로 API를 사용하기에 앞서 이를 위한 사전 작업에 대해 살펴보도록 한다.

    아래서 다루는 내용은 유튜브 API 뿐만이 아니라, 다른 구글 API 사용에도 사전 작업으로 참고할 수 있다.

     


     

    API를 바로 사용해보고 싶지만, 유튜브 API를 사용하기 위해서는 몇 가지 사전 작업이 필요하다. 

    (아래에 나와있는 이미지는 GCP(구글 클라우드 플랫폼) 콘솔 버전에 따라 상이할 수 있지만, 기능에 크게 차이는 없다.)

     

    GCP 프로젝트 등록

    GCP 프로젝트 생성

     

    구글에서 제공하는 API이기 때문에, GCP에 프로젝트를 만들어야 한다. 구글 클라우드 플랫폼 콘솔(https://console.cloud.google.com) 화면에서 "새 프로젝트" 버튼을 클릭하여 새로운 프로젝트를 하나 만든다. 

     

     

    유튜브 API 추가

    프로젝트가 생성됐다면, 이제 프로젝트에서 사용하고 싶은 구글의 API를 추가한다.

    Youtube Library

     

    GCP 콘솔에서 API 및 서비스 - 라이브러리 메뉴를 클릭하여 "Youtube"로 검색하면 위에서 설명한 API들이 보인다. 각각을 클릭하여 "사용설정" 버튼을 클릭한다.

     

     

    사용자 인증 추가

    유튜브의 다양한 API 중에는 인증된 사용자에게만 제공되는 기능도 필요하다.(API를 사용해서 아무나 내 채널에 영상을 올리면 큰일 나니까...) 때문에 이를 위한 인증 방법을 설정해야 한다. 

     

    인증방법은 크게 세 가지(oAuth2.0, 서비스 계정, API 키)가 존재한다. 

    특정 사용자에게만 허용된 API를 사용하려면 "oAuth2.0"을, 그렇지 않은 경우 "서비스 계정" 또는 "API 키" 방식을 사용한다. "서비스 계정"은 사용자 인증키 파일을 받아 서버에서 사용하는 방식이고, "API 키"는 암호화된 문자열을 통해 서버가 없는 클라이언트(브라우저, 모바일 앱 등)에서 주로 사용한다.

     

    구글에서는 여러 제한사항 때문에 "API 키"는 테스트 정도 외에는 권장하지 않으며, 개발 및 운영환경에서 모두 사용 가능한 "서비스 계정"을 권고한다.

     

     

    API 키 타입

     

    사용자 인증 정보를 추가하는 방법은 마법사를 통한 방법과 메뉴(GCP 콘솔에서 API 및 서비스 - 사용자 인증 정보 메뉴)를 통한 직접 생성 두 가지가 있다. 먼저 API 상세화면에 있는 사용자 인증 정보 만들기 버튼을 클릭하여 마법사를 통해 생성해 보자.

    API 상세 화면에서 사용자 인증 정보 만들기

     

    사용자 인증 정보 마법사는 사용자에게 여러 정보를 물어보고 적절한 방식의 인증방법을 선택한다. 채널의 최신 업로드 동영상 리스트를 1시간 간격으로 수집하는 모듈을 개발한다고 가정하고 아래와 같이 설정을 하면, API 키 타입의 사용자 인증 정보가 추가된다.

    사용자 인증 정보 마법사

     

    이때 액세스 할 데이터 항목에서 사용자 데이터를 선택하면, 경고 메시지가 표시된다. 특정 채널의 사용자 권한을 얻기 위해서는 UI가 필요한데, 호출 위치를 비 UI로 했기 때문이다. 즉, 특정 사용자의 권한이 필요한 경우 API 호출 위치를 비 UI가 아닌 다른 값으로 설정해야 하며 이경우 마법사는 oAuth2.0 인증방식으로 추가된다. 이와 관련해서는 뒤에서 다시 살펴보기로 하고, 하단의 완료 버튼을 누르면 생성된 API 키 값을 확인할 수 있다.

     

     

    서비스 계정 타입

    위에서 만든 "API 키"는  마법사 방식으로 인증 정보를 만드는 방법을 설명하기 위해 생성해 본 것이지, 테스트 정도 외에는 실제 개발에서 사용하기 어렵다. 때문에 이번에는 구글이 권고하는 "서비스 계정" 방식의 인증 정보를 추가해보자. 

    사용자 인증 정보 만들기 - 서비스 계정 키

    사용자 인정 정보 화면에서 "사용자 인증 정보 만들기" 버튼을 클릭하면 위에서 설명한 세 가지 형식이 드롭다운 박스에 나타난다. "서비스 계정 키"를 선택한다.

     

    서비스 계정 생성

    서비스 계정은 GCP의 IAM과 연계되기 때문에 GCP의 다양한 역할을 부여할 수 있는데, API 사용을 위해 소유자 권한으로 생성한다. 생성이 완료되면 자동으로 계정 정보가 담긴 JSON 파일이 다운로드된다. 나중에 API를 사용하기 위해 반드시 필요한 파일이므로 잘 보관하자.

     

     

    OAuth2.0 타입

    앞의 두 가지 인증은 유튜브의 API 중 권한에 제한 없이 공개된 것들만 사용할 수 있다. 채널에 동영상을 올리거나 특정 클립의 수익 조회 등과 같이 유튜브에 로그인해야만 가능한 기능들은 OAuth2.0 인증을 통해서만 해당 API를 사용할 수 있다.

     

    OAuth는 사용자의 권한을 얻기 위한 인증 방법으로 회원가입이나 로그인할 때 쉽게 만날 수 있는 "~로 회원가입 하기", "~로 로그인 하기"가 대표적인 OAuth 인증이다. 보다 구체적인 설명은 생활코딩의 OAUTH2.0 강좌를 참고하자.

     

    그러면, 유튜브 API 사용을 위해 OAuth2.0 타입의 사용자 인증 방식을 등록해 보자.

    앞서 서비스 계정 타입 등록할 때와 마찬가지로 사용자 인정 정보 화면에서 "사용자 인증 정보 만들기" 버튼을 클릭한 뒤 "OAuth 클라이언트 ID"를 선택한다.

    OAuth2.0 방식의 인증을 추가하기 위해서는 한 가지 더 해줘야 할 게 있다.(거참 할 일 많다. 남이 힘들게 만들어 놓은 API 무료로 쓰는데 이 정도쯤은 해줘야지... -0-;;) 한 번쯤은 해봤을 "~XXX로 로그인하기" 누르면 나오는 권한 체크 화면을 우리도 만들어 줘야 한다.

    OAuth 클라이언트 ID 만들기

     

    OAuth2.0 인증 등록 화면에서 "동의 화면 구성" 버튼을 클릭하면, OAuth 동의 화면으로 이동한다. 

    OAuth 동의 화면

    우리는 학습을 위한 개발을 목적으로 하기 때문에 애플리케이션 이름 정도만 입력하고 저장한다. 개인의 로그인 권한에 대한 동의를 구글의 이름을 빌려서 보여주는 화면인 만큼, 운영 환경을 위해서는 보다 다양한 정보(도메인, 홈페이지 링크, 개인정보처리 방침 링크, 서비스 약관 링크 등)를 입력해야 한다. 뿐만 아니라 제대로 된 정보를 보여주는지, 문제가 있는 도메인은 아닌지 구글의 확인 절차가 필요하다. 다행히 구글의 확인이 없더라도 제한적인 개발 및 테스트는 가능하다.

     

     

    저장 후에는 다시 OAuth2.0 인증 등록 화면으로 돌아온다. 우리는 웹 애플리케이션을 통해 로컬 개발환경에서 API를 테스트하기 때문에 아래와 같이 선택한다.

    OAuth 인증 등록

    웹 애플리케이션 방식을 선택하고 OAuth2.0 인증 이름을 입력한다. OAuth2.0은 사용자에게 권한 승인 여부를 받은 후에 API 사용이 가능하다. 때문에, 승인 완료 이후 호출될 웹 애플리케이션의 URI 정보를 입력해줘야 한다. "승인된 자바스크립트 원본"은 브라우저에서 자바스크립트를 사용하여 API를 호출할 때 입력하며, 해당 호출이 일어나는 도메인을 입력한다. "승인된 리디렉션 URI"는 서버에서 NodeJs, PHP, Java, Python, Ruby, .NET과 같은 언어와 프레임워크를 사용하여 API를 호출할 때 입력하며, 승인이 완료된 후 호출되는 엔드포인트 값을 입력한다. 위에서 입력한 리디렉션 URI의 실체(?)는 추후 API 사용하기 글에서 살펴볼 예정이다.

     


     

    지금까지 유튜브 API를 사용하기 위한 사전 작업을 진행했다. GCP에서 프로젝트를 만들고 사용자 인증을 위한 세 가지 방식을 등록하였으며, 이중 OAuth2.0을 위한 화면정보도 입력했다.

    생성된 사용자 인증 정보 목록

     

     

    다음 글에서는 유튜브 API - 시작하기 글에서 설명했던 3종류의 유튜브 API를 통해 구체적으로 어떤 데이터를 가져올 수 있는지, 제약사항은 어떤 것들이 있으며 이를 해결하는 방법은 무엇인지 살펴보자.

     

     

    댓글 0

Designed by Joypinkgom.