JavaScript 代码示例

以下代码示例使用适用于 JavaScript 的 Google API 客户端库。您可以从 GitHub 上的 YouTube API 代码示例代码库javascript 文件夹中下载此示例。

该代码会请求用户授予访问 https://www.googleapis.com/auth/yt-analytics.readonly 范围的权限。

return gapi.auth2.getAuthInstance()     .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"})     ...

您的应用可能还需要请求访问其他范围。例如,调用 YouTube Analytics API 和 YouTube Data API 的应用可能也需要用户授予其 YouTube 帐号的访问权限。授权概览一文中指出了调用 YouTube Analytics API 的应用中通常使用的范围。

检索每日频道统计信息

此示例会调用 YouTube Analytics API 来检索授权用户频道在 2017 日历年的每日观看次数和其他指标。该示例使用 Google API JavaScript 客户端库

设置授权凭据

首次在本地运行此示例之前,您需要为项目设置授权凭据:

  1. Google API 控制台中创建或选择项目。
  2. 为您的项目启用 YouTube Analytics API
  3. 凭据页面顶部,选择 OAuth 同意屏幕标签页。选择电子邮件地址,输入产品名称(如果尚未设置),然后点击“保存”按钮。
  4. 凭据页面上,点击创建凭据按钮,然后选择 OAuth 客户端 ID
  5. 选择 Web 应用类型。
  6. 在“已获授权的 JavaScript 来源”字段中,输入您将提供代码示例的网址。例如,您可以使用类似 http://localhost:8000http://yourserver.example.com 的内容。您可以将“已获授权的重定向 URI”字段留空。
  7. 点击创建按钮以完成凭据的创建。
  8. 在关闭对话框之前,请复制客户端 ID,您需要将这些 ID 放入代码示例中。

制作示例的本地副本

然后,将示例保存到本地文件中。在示例中,找到以下行,并将 YOUR_CLIENT_ID 替换为您在设置授权凭据时获得的客户端 ID。

gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});

运行代码

现在,您可以实际测试示例了:

  1. 在网络浏览器中打开本地文件,然后在浏览器中打开调试控制台。您应该会看到一个显示两个按钮的页面。
  2. 点击授权并加载按钮,以启动用户授权流程。如果您授权该应用检索您的频道数据,您应该会看到在浏览器中输出到控制台的以下行:
     Sign-in successful GAPI client loaded for API
  3. 如果您看到错误消息(而非上述代码行),请确认您是从为项目设置的已获授权的重定向 URI 中加载脚本,并将您的客户端 ID 放入上述代码。
  4. 点击执行按钮以调用该 API。您应该会在浏览器中看到 response 对象输出到控制台中。在该对象中,result 属性会映射到包含 API 数据的对象。

示例代码

<script src="https://apis.google.com/js/api.js"></script> <script>   function authenticate() {     return gapi.auth2.getAuthInstance()         .signIn({scope: "https://www.googleapis.com/auth/yt-analytics.readonly"})         .then(function() { console.log("Sign-in successful"); },               function(err) { console.error("Error signing in", err); });   }   function loadClient() {     return gapi.client.load("https://youtubeanalytics.googleapis.com/$discovery/rest?version=v2")         .then(function() { console.log("GAPI client loaded for API"); },               function(err) { console.error("Error loading GAPI client for API", err); });   }   // Make sure the client is loaded and sign-in is complete before calling this method.   function execute() {     return gapi.client.youtubeAnalytics.reports.query({       "ids": "channel==MINE",       "startDate": "2017-01-01",       "endDate": "2017-12-31",       "metrics": "views,estimatedMinutesWatched,averageViewDuration,averageViewPercentage,subscribersGained",       "dimensions": "day",       "sort": "day"     })         .then(function(response) {                 // Handle the results here (response.result has the parsed body).                 console.log("Response", response);               },               function(err) { console.error("Execute error", err); });   }   gapi.load("client:auth2", function() {     gapi.auth2.init({client_id: 'YOUR_CLIENT_ID'});   }); </script> <button onclick="authenticate().then(loadClient)">authorize and load</button> <button onclick="execute()">execute</button>