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>