完成本页其余部分所述的操作。大约五分钟后,您将获得一个向 YouTube Data API 发出请求的简单 Ruby 命令行应用。
本指南中使用的示例代码会检索 Google Developers 的 YouTube 频道channel
资源,并输出该资源的一些基本信息。
前提条件
如需运行本快速入门,您需要:
- Ruby 2.0 或更高版本。
- 访问互联网和网络浏览器。
- Google 帐号。
第 1 步:启用 YouTube Data API
-
您可以使用此向导在 Google Developers Console 中创建或选择项目,并自动启用 API。点击继续,然后点击转到凭据。
-
在创建凭据页面上,点击取消按钮。
-
在页面顶部,选择 OAuth 同意屏幕标签页。选择一个 Email address(电子邮件地址),输入产品名称(如果尚未设置),然后点击 Save(保存)按钮。
-
选择凭据标签页,点击创建凭据按钮,然后选择 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
首次运行示例时,系统会提示您授予访问权限:
此示例会尝试在默认浏览器中打开新的窗口或标签页。 如果此操作失败,请从控制台中复制网址并在浏览器中手动打开该网址。
如果您尚未登录 Google 帐号,系统会提示您登录。如果您登录了多个 Google 帐号,系统会要求您选择一个帐号用于授权。
- 点击接受按钮。
复制所提供的代码,将其粘贴到命令行提示符中,然后按 Enter 键。授权后,该代码可能会出现在重定向到的网页的网址中:
http://localhost/?code=4/nr_1TspmmQPFyifh7nz...OFo#
备注
- 授权信息存储在文件系统中,因此后续执行将不会提示用户授权。
- 此示例中的授权流程专为命令行应用而设计。如需了解如何在 Web 应用中执行授权,请参阅为 Web 服务器应用使用 OAuth 2.0。