Mã JavaScript mẫu

Đoạn mã dưới đây sử dụng Thư viện ứng dụng Google API 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ã mẫu YouTube API trên GitHub.

Mã này yêu cầu người dùng cấp quyền 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 cấp quyền truy cập vào các phạm vi khác. Ví dụ: một ứng dụng gọi YouTube Analytics API và YouTube Data API có thể yêu cầu người dùng cấp quyền truy cập vào tài khoản YouTube của họ. Thông tin tổng quan về việc uỷ quyền xác định các phạm vi thường được dùng trong những ứng dụng gọi API YouTube Analytics.

Truy xuất số liệu thống kê hằng ngày về kênh

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

Thiết lập thông tin đăng nhập uỷ quyền

Trước khi chạy mẫu này cục bộ lần đầu tiên, bạn cần thiết lập thông tin uỷ quyền 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 YouTube Analytics API cho dự án của bạn.
  3. Ở đầu trang Credentials (Thông tin xác thực), hãy chọn thẻ OAuth consent screen (Màn hình yêu cầu đồng ý OAuth). Chọn một Địa chỉ email, nhập Tên sản phẩm (nếu 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 OAuth.
  5. Chọn loại ứng dụng là Ứng dụng web.
  6. Trong trường Nguồn gốc JavaScript được uỷ quyền, hãy nhập URL mà bạn sẽ phân phát mẫu mã. Ví dụ: bạn có thể sử dụng 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 đăng nhập.
  8. Trước khi đóng hộp thoại, hãy sao chép mã ứng dụng khách. Bạn sẽ cần đặt mã này vào mẫu mã.

Tạo 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, 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 xác thực uỷ quyền.

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

Chạy mã

Giờ đây, bạn đã sẵn sàng kiểm thử mẫu thực tế:

  1. Mở tệp cục bộ bằng 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 có 2 nút.
  2. Nhấp vào nút uỷ quyền và tải để khởi chạy quy trình uỷ quyền người dùng. Nếu cho phép ứng dụng truy xuất dữ liệu kênh của bạn, bạn sẽ thấy các dòng sau đây 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 uỷ 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 thi) để gọi API. Bạn sẽ thấy một đối tượng response in ra bảng điều khiển trong trình duyệt. Trong đối tượng đó, thuộc tính result sẽ liên kết vớ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>