このページで説明する手順を完了すると、5 分ほどで、YouTube Data API にリクエストを送信するシンプルな Ruby コマンドライン アプリケーションが完成します。
このガイドで使用するサンプルコードは、GoogleDevelopers YouTube チャンネルのchannel リソースを取得し、そのリソースからいくつかの基本情報を出力します。
前提条件
このクイックスタートを実行するには、次のものが必要です。
- Ruby 2.0 以降。
- インターネット アクセスとウェブブラウザ。
- Google アカウント。
ステップ 1: YouTube Data API を有効にする
-
こちらのウィザードを使用して、Google Developers Console でプロジェクトを作成または選択し、API を自動的に有効にします。[続行]、[認証情報に移動] の順にクリックします。
-
[認証情報を作成] ページで、[キャンセル] ボタンをクリックします。
-
ページ上部の [OAuth 同意画面] タブを選択します。 [メールアドレス] を選択し、[商品名] を入力して(まだ設定されていない場合)、[保存] ボタンをクリックします。
-
[認証情報] タブを選択し、[認証情報を作成] ボタンをクリックして、[OAuth クライアント ID] を選択します。
-
アプリケーション タイプとして [その他] を選択し、「YouTube Data API クイックスタート」という名前を入力して、[作成] ボタンをクリックします。
-
[OK] をクリックして、表示されたダイアログを閉じます。
-
クライアント ID の右側にある (JSON をダウンロード)ボタンをクリックします。
-
ダウンロードしたファイルを作業ディレクトリに移動し、名前を
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
サンプルを初めて実行すると、アクセスを承認するよう求められます。
サンプルは、デフォルトのブラウザで新しいウィンドウまたはタブを開こうとします。失敗した場合は、コンソールから URL をコピーして、ブラウザで手動で開きます。
Google アカウントにまだログインしていない場合は、ログインを求められます。複数の Google アカウントにログインしている場合は、認証に使用するアカウントを 1 つ選択するよう求められます。
- [同意する] ボタンをクリックします。
表示されたコードをコピーし、コマンドライン プロンプトに貼り付けて、Enter キーを押します。このコードは、承認後にリダイレクトされるページの URL に表示されることがあります。
http://localhost/?code=4/nr_1TspmmQPFyifh7nz...OFo#
メモ
- 認可情報はファイル システムに保存されるため、以降の実行では認可を求められません。
- この例の認可フローは、コマンドライン アプリケーション用に設計されています。ウェブ アプリケーションで認可を行う方法については、ウェブサーバー アプリケーションでの OAuth 2.0 の使用をご覧ください。