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 數據分析 API
  3. 憑證 頁面頂端,選取 OAuth 同意畫面 標籤。選取電子郵件地址,輸入產品名稱 (如果尚未設定),然後按一下 [儲存] 按鈕。
  4. 在「憑證」頁面上,按一下 [建立憑證] 按鈕,然後選取 [Oauth Client ID]
  5. 選取 [網路應用程式] 應用程式類型。
  6. 在 [授權的 JavaScript 來源] 欄位中,輸入要提供程式碼範例的網址。例如,您可以使用 http://localhost:8000http://yourserver.example.com 等名稱。您可以將 [授權重新導向 URI] 欄位留空。
  7. 按一下 [Create] (建立) 按鈕,完成憑證建立程序。
  8. 在關閉對話方塊之前,請複製用戶端 ID (必須輸入到程式碼範例中)。

在本機上複製樣本

然後再將範例儲存至本機檔案。在範例中,找出以下這一行,並將 YOUR_CLIENT_ID 替換成您設定授權憑證時取得的用戶端 ID。

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

執行程式碼

現在,您可以開始實際測試範例了:

  1. 透過網路瀏覽器開啟本機檔案,然後在瀏覽器中開啟偵錯控制台。您應該會看到一個顯示兩個按鈕的網頁。
  2. 按一下 [Authorize and load] (授權並載入) 按鈕,啟動使用者授權流程。如果您授權應用程式擷取您的頻道資料,系統會在瀏覽器中顯示以下幾行內容:
    Sign-in successful
    GAPI client loaded for API
  3. 如果您看到錯誤訊息 (而不是上述幾行內容),請確認您是透過為專案設定的授權重新導向 URI 載入指令碼,而且已經按照上述說明將用戶端 ID 加到程式碼中。
  4. 按一下「Execute」按鈕,即可呼叫 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>