Ruby 빠른 시작

이 페이지의 나머지 부분에 설명된 단계를 완료하면 약 5분 만에 YouTube Data API에 요청을 보내는 간단한 Ruby 명령줄 애플리케이션이 완성됩니다.

이 가이드에 사용된 샘플 코드는 GoogleDevelopers YouTube 채널의 channel 리소스를 가져와 해당 리소스의 기본 정보를 출력합니다.

기본 요건

이 빠른 시작을 실행하려면 다음이 필요합니다.

  • Ruby 2.0 이상
  • 인터넷 및 웹브라우저 액세스
  • Google 계정

1단계: YouTube Data API 사용 설정

  1. 이 마법사를 사용하여 Google Developers Console에서 프로젝트를 만들거나 선택하고 API를 자동으로 사용 설정합니다. 계속을 클릭한 다음 사용자 인증 정보로 이동을 클릭합니다.

  2. 사용자 인증 정보 만들기 페이지에서 취소 버튼을 클릭합니다.

  3. 페이지 상단에서 OAuth 동의 화면 탭을 선택합니다. 이메일 주소를 선택하고, 아직 설정되지 않은 경우 제품 이름을 입력한 다음 저장 버튼을 클릭합니다.

  4. 사용자 인증 정보 탭을 선택하고 사용자 인증 정보 만들기 버튼을 클릭한 후 OAuth 클라이언트 ID를 선택합니다.

  5. 애플리케이션 유형 기타를 선택하고 이름에 'YouTube Data API Quickstart'를 입력한 후 만들기 버튼을 클릭합니다.

  6. 확인을 클릭하여 결과 대화상자를 닫습니다.

  7. 클라이언트 ID 오른쪽에 있는 (JSON 다운로드) 버튼을 클릭합니다.

  8. 다운로드한 파일을 작업 디렉터리로 이동하고 이름을 client_secret.json로 변경합니다.

2단계: Google 클라이언트 라이브러리 설치

다음 명령어를 실행하여 라이브러리를 설치합니다.

gem install google-api-client

다른 설치 옵션은 라이브러리의 설치 페이지를 참고하세요.

3단계: 샘플 설정

작업 디렉터리에 quickstart.rb이라는 파일을 만들고 다음 코드를 복사합니다.

# Sample Ruby code for user authorization

require 'rubygems'
gem 'google-api-client', '>0.7'
require 'google/apis'
require 'google/apis/youtube_v3'
require 'googleauth'
require 'googleauth/stores/file_token_store'

require 'fileutils'
require 'json'

# REPLACE WITH VALID REDIRECT_URI FOR YOUR CLIENT
REDIRECT_URI = 'http://localhost'
APPLICATION_NAME = 'YouTube Data API Ruby Tests'

# REPLACE WITH NAME/LOCATION OF YOUR client_secrets.json FILE
CLIENT_SECRETS_PATH = 'client_secret.json'

# REPLACE FINAL ARGUMENT WITH FILE WHERE CREDENTIALS WILL BE STORED
CREDENTIALS_PATH = File.join(Dir.home, '.credentials',
                             "youtube-quickstart-ruby-credentials.yaml")

# SCOPE FOR WHICH THIS SCRIPT REQUESTS AUTHORIZATION
SCOPE = Google::Apis::YoutubeV3::AUTH_YOUTUBE_READONLY

def authorize
  FileUtils.mkdir_p(File.dirname(CREDENTIALS_PATH))

  client_id = Google::Auth::ClientId.from_file(CLIENT_SECRETS_PATH)
  token_store = Google::Auth::Stores::FileTokenStore.new(file: CREDENTIALS_PATH)
  authorizer = Google::Auth::UserAuthorizer.new(
    client_id, SCOPE, token_store)
  user_id = 'default'
  credentials = authorizer.get_credentials(user_id)
  if credentials.nil?
    url = authorizer.get_authorization_url(base_url: REDIRECT_URI)
    puts "Open the following URL in the browser and enter the " +
         "resulting code after authorization"
    puts url
    code = gets
    credentials = authorizer.get_and_store_credentials_from_code(
      user_id: user_id, code: code, base_url: REDIRECT_URI)
  end
  credentials
end

# Initialize the API
service = Google::Apis::YoutubeV3::YouTubeService.new
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize

# Sample ruby code for channels.list

def channels_list_by_username(service, part, **params)
  response = service.list_channels(part, params).to_json
  item = JSON.parse(response).fetch("items")[0]

  puts ("This channel's ID is #{item.fetch("id")}. " +
        "Its title is '#{item.fetch("snippet").fetch("title")}', and it has " +
        "#{item.fetch("statistics").fetch("viewCount")} views.")
end

channels_list_by_username(service, 'snippet,contentDetails,statistics', for_username: 'GoogleDevelopers')

4단계: 샘플 실행

다음 명령어를 사용하여 샘플을 실행합니다.

ruby quickstart.rb

샘플을 처음 실행하면 액세스 권한을 부여하라는 메시지가 표시됩니다.

  1. 샘플은 기본 브라우저에서 새 창이나 탭을 열려고 시도합니다. 이 방법이 실패하면 콘솔에서 URL을 복사하여 브라우저에서 수동으로 엽니다.

    아직 Google 계정에 로그인하지 않은 경우 로그인하라는 메시지가 표시됩니다. 여러 Google 계정에 로그인한 경우 인증에 사용할 계정을 선택하라는 메시지가 표시됩니다.

  2. 수락 버튼을 클릭합니다.
  3. 제공된 코드를 복사하여 명령줄 프롬프트에 붙여넣고 Enter 키를 누릅니다. 코드는 승인을 부여한 후 리디렉션되는 페이지의 URL에 표시될 수 있습니다.

    http://localhost/?code=4/nr_1TspmmQPFyifh7nz...OFo#

참고

  • 승인 정보는 파일 시스템에 저장되므로 후속 실행에서는 승인을 묻는 메시지가 표시되지 않습니다.
  • 이 예의 승인 흐름은 명령줄 애플리케이션용으로 설계되었습니다. 웹 애플리케이션에서 승인을 실행하는 방법에 관한 자세한 내용은 웹 서버 애플리케이션용 OAuth 2.0 사용을 참고하세요.

추가 자료