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. [OK] をクリックして、ダイアログを閉じます。

  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 アカウントにログインしている場合は、承認に使用するアカウントを 1 つ選択するよう求められます。

  2. [同意する] ボタンをクリックします。
  3. 表示されたコードをコピーして、コマンドライン プロンプトに貼り付け、Enter キーを押します。認証を許可した後にリダイレクトされるページの URL にコードが表示されることがあります。

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

メモ

  • 認可情報はファイル システムに保存されるため、以降の実行では認可を求めるプロンプトは表示されません。
  • この例の認可フローは、コマンドライン アプリケーション用に設計されています。ウェブ アプリケーションで認可を行う方法については、ウェブサーバー アプリケーションに OAuth 2.0 を使用するをご覧ください。

関連情報