Mẫu mã JavaScript

Mã mẫu bên dưới sử dụng Thư viện ứng dụng API của Google cho JavaScript. Bạn có thể tải mẫu này xuống từ thư mục javascript của Kho lưu trữ mẫu mã API YouTube trên GitHub.

Mã này yêu cầu người dùng cho phép truy cập vào phạm vi https://www.googleapis.com/auth/yt-analytics.readonly.

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

Ứng dụng của bạn cũng có thể cần yêu cầu quyền truy cập vào các phạm vi khác. Ví dụ: Một ứng dụng gọi API YouTube Analytics và API dữ liệu YouTube có thể cần người dùng cấp quyền truy cập vào tài khoản YouTube của họ. Tổng quan về ủy quyền xác định phạm vi thường được sử dụng trong các ứng dụng gọi API YouTube Analytics.

Truy xuất số liệu thống kê hằng ngày của kênh

Ví dụ này gọi API YouTube Analytics để truy xuất lượt xem hàng ngày và các chỉ số khác cho kênh của người dùng cấp phép cho năm 2017. Mẫu này sử dụng thư viện ứng dụng JavaScript của API Google.

Thiết lập thông tin cấp phép

Trước khi chạy mẫu này lần đầu tiên, bạn cần thiết lập thông tin cấp phép cho dự án của mình:

  1. Tạo hoặc chọn một dự án trong Google API Console.
  2. Bật API YouTube Analytics cho dự án của bạn.
  3. Ở đầu trang Thông tin xác thực, hãy chọn thẻ Màn hình xin phép bằng OAuth. Chọn một Địa chỉ email, nhập Tên sản phẩm nếu bạn chưa đặt, rồi nhấp vào nút Lưu.
  4. Trên trang Thông tin xác thực, hãy nhấp vào nút Tạo thông tin xác thực rồi chọn Mã ứng dụng khách Oauth.
  5. Chọn loại ứng dụng Ứng dụng web.
  6. Trong trường Nguồn gốc JavaScript được cho phép, hãy nhập URL nơi bạn sẽ phân phát mã mẫu. Ví dụ: bạn có thể sử dụng một số tên như http://localhost:8000 hoặc http://yourserver.example.com. Bạn có thể để trống trường URI chuyển hướng được uỷ quyền.
  7. Nhấp vào nút Tạo để hoàn tất quá trình tạo thông tin xác thực.
  8. Trước khi đóng hộp thoại, hãy sao chép mã ứng dụng mà bạn cần đặt vào mã mẫu.

Tạo một bản sao cục bộ của mẫu

Sau đó, hãy lưu mẫu vào một tệp cục bộ. Trong mẫu này, hãy tìm dòng sau và thay thế YOUR_CLIENT_ID bằng mã ứng dụng khách mà bạn đã nhận được khi thiết lập thông tin uỷ quyền.

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

Chạy mã

Bây giờ, bạn đã sẵn sàng để thử nghiệm mẫu:

  1. Mở tệp cục bộ từ trình duyệt web và mở bảng điều khiển gỡ lỗi trong trình duyệt. Bạn sẽ thấy một trang hiển thị hai nút.
  2. Nhấp vào nút uỷ quyền và tải để chạy luồng uỷ quyền người dùng. Nếu bạn cho phép ứng dụng truy xuất dữ liệu kênh của mình, bạn sẽ thấy các dòng sau in ra bảng điều khiển trong trình duyệt:
    Sign-in successful
    GAPI client loaded for API
  3. Nếu bạn thấy thông báo lỗi thay vì các dòng ở trên, hãy xác nhận rằng bạn đang tải tập lệnh từ URI chuyển hướng được ủy quyền mà bạn đã thiết lập cho dự án của mình và bạn đặt mã ứng dụng khách vào mã như mô tả ở trên.
  4. Nhấp vào nút execute để thực hiện lệnh gọi API. Bạn sẽ thấy một bản in đối tượng response trong bảng điều khiển trong trình duyệt. Trong đối tượng đó, thuộc tính result liên kết tới một đối tượng chứa dữ liệu API.

Mã mẫu

<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>