完成本頁面其餘部分所述的步驟,大約五分鐘後,您就能建立簡單的 Ruby 指令列應用程式,向 YouTube Data API 發出要求。
本指南使用的範例程式碼會擷取 GoogleDevelopers YouTube 頻道的channel
資源,並從該資源列印一些基本資訊。
必要條件
如要執行這項快速入門導覽課程,您需要:
- Ruby 2.0 以上版本。
- 網路連線和網路瀏覽器。
- Google 帳戶。
步驟 1:開啟 YouTube Data API
-
使用這個精靈在 Google Developers Console 中建立或選取專案,並自動啟用 API。依序點按「繼續」和「前往憑證」。
-
在「建立憑證」頁面中,按一下「取消」按鈕。
-
選取頁面頂端的「OAuth 同意畫面」分頁標籤。 選取「電子郵件地址」,輸入「產品名稱」 (如果尚未設定),然後按一下「儲存」按鈕。
-
選取「憑證」分頁,按一下「建立憑證」按鈕,然後選取「OAuth 用戶端 ID」。
-
選取「Other」(其他) 應用程式類型,輸入名稱「YouTube Data API Quickstart」,然後按一下「Create」(建立) 按鈕。
-
按一下「確定」關閉隨即顯示的對話方塊。
-
按一下用戶端 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
第一次執行範例時,系統會提示您授權存取權:
這個範例會嘗試在預設瀏覽器中開啟新視窗或分頁。 如果失敗,請從控制台複製網址,然後在瀏覽器中手動開啟。
如果尚未登入 Google 帳戶,系統會提示你登入。如果您登入了多個 Google 帳戶,系統會要求您選取一個帳戶進行授權。
- 按一下「接受」按鈕。
複製系統提供的程式碼,貼到指令列提示中,然後按下 Enter 鍵。授權後,系統可能會將您重新導向至某個網頁,而該網頁的網址中可能就會顯示驗證碼:
http://localhost/?code=4/nr_1TspmmQPFyifh7nz...OFo#
附註
- 授權資訊會儲存在檔案系統中,因此後續執行作業時不會提示授權。
- 本範例中的授權流程是為指令列應用程式設計。如要瞭解如何在網路應用程式中執行授權,請參閱「使用 OAuth 2.0 處理網路伺服器應用程式」。