Đăng ký nhận thông báo đẩy

API dữ liệu YouTube (v3) hỗ trợ thông báo đẩy qua PubSubHubbub, giao thức xuất bản/đăng ký từ máy chủ đến máy chủ dành cho các tài nguyên có thể truy cập trên web. Thông báo được gửi đến người đăng ký qua webhook HTTP, hiệu quả hơn nhiều so với các giải pháp dựa trên cuộc thăm dò ý kiến. Với PubSubHubbub, máy chủ của bạn tìm hiểu về các sự kiện gần như theo thời gian thực mà không phải xác định khoảng thời gian thăm dò tối ưu hoặc tìm nạp liên tục dữ liệu không thay đổi.

Máy chủ gọi lại PubSubHubbub của bạn nhận được thông báo nguồn cấp dữ liệu Atom khi kênh thực hiện bất kỳ hoạt động nào sau đây:

  • tải video lên
  • cập nhật tiêu đề của video
  • cập nhật phần mô tả của video

Các bước sau giải thích cách đăng ký nhận thông báo:

  1. Thiết lập máy chủ gọi lại có thể xử lý các thông báo nguồn cấp dữ liệu Atom đến.

  2. Sử dụng trung tâm Google để đăng ký nhận thông báo đẩy:

    • Đặt chế độ thành subscribe. (Hoặc đặt chế độ này thành unsubscribe để huỷ gói thuê bao.)

    • Đặt URL gọi lại thành URL mà bạn đã thiết lập ở bước 1.

    • Đặt URL của chủ đề thành https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID, trong đó CHANNEL_IDmã nhận dạng kênh YouTube mà bạn muốn truy xuất thông báo đẩy.

  3. Thông báo về quá trình xử lý được gửi đến máy chủ gọi lại của bạn. Định dạng thông báo như dưới đây. Xin lưu ý rằng bạn có thể sử dụng giá trị của phần tử <yt:videoId> để xác định video mới thêm hoặc cập nhật. Bạn cũng có thể sử dụng giá trị của phần tử <yt:channelId> để xác định kênh sở hữu video đó.

    <feed xmlns:yt="http://www.youtube.com/xml/schemas/2015"
             xmlns="http://www.w3.org/2005/Atom">
      <link rel="hub" href="https://pubsubhubbub.appspot.com"/>
      <link rel="self" href="https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID"/>
      <title>YouTube video feed</title>
      <updated>2015-04-01T19:05:24.552394234+00:00</updated>
      <entry>
        <id>yt:video:VIDEO_ID</id>
        <yt:videoId>VIDEO_ID</yt:videoId>
        <yt:channelId>CHANNEL_ID</yt:channelId>
        <title>Video title</title>
        <link rel="alternate" href="http://www.youtube.com/watch?v=VIDEO_ID"/>
        <author>
         <name>Channel title</name>
         <uri>http://www.youtube.com/channel/CHANNEL_ID</uri>
        </author>
        <published>2015-03-06T21:40:57+00:00</published>
        <updated>2015-03-09T19:05:24.552394234+00:00</updated>
      </entry>
    </feed>