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,您需要将其放入代码示例中。

创建示例的本地副本

然后,将示例保存到本地文件。在示例中,找到以下行,并将 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>