Jeff Posnick, Quan hệ nhà phát triển YouTube – Tháng 6 năm 2013
Trong hơn một năm, bạn có thể liên kết hồ sơ trên Google+ với các kênh YouTube và chúng tôi đã viết blog về việc một số phản hồi của API Data v2 đã thay đổi như thế nào nhờ liên kết hồ sơ đó. Gần đây hơn, chúng tôi có thể tạo kênh YouTube mới không có tên người dùng YouTube truyền thống được liên kết với chúng và thay vào đó, chỉ được xác định bằng hồ sơ trên Google+ của họ. Nhiều thông tin từ bài đăng trên blog đó vẫn được áp dụng nhưng điểm khác biệt vô cùng này làm mất hiệu lực của một số giả định cơ bản về kênh YouTube – giống như mỗi giả định khác sẽ luôn gắn liền với tên người dùng YouTube duy nhất – và chúng tôi muốn theo dõi với một số phương pháp hay nhất khác về cách viết mã phù hợp với tất cả các phiên bản của kênh.
Mã nhận dạng kênh trong API dữ liệu phiên bản 3
Tất cả các hoạt động v3 hoạt động với kênh đều sử dụng ID kênh duy nhất làm phương tiện xác định những kênh đó. ID cho kênh của người dùng YouTube cụ thể giống nhau trong cả v2 và v3 của API, đơn giản hóa việc di chuyển giữa các phiên bản. Việc này phụ thuộc hoàn toàn vào ID kênh có thể khiến các nhà phát triển trước đây thường sử dụng tên người dùng YouTube chuyển sang phương pháp API gặp khó khăn. Tuy nhiên, phiên bản 3 được thiết kế để xử lý các kênh có và không có tên người dùng cũ giống nhau và điều đó đồng nghĩa với việc sử dụng ID kênh ở khắp mọi nơi.
Nếu đang sử dụng v3 và muốn truy xuất mã nhận dạng kênh tương ứng với người dùng được ủy quyền, bạn có thể gọi phương thức channels.list(part="id", mine=true)
. Điều này tương đương với việc yêu cầu hồ sơ kênh của người dùng default
trong phiên bản 2.
Nếu bạn tự tìm thấy tên người dùng YouTube cũ tùy ý mà bạn cần để dịch thành ID kênh bằng v3 của API, bạn có thể thực hiện lệnh gọi channels.list(part="id", forUsername="username")
tới API.
Nếu bạn chỉ biết tên hiển thị và đang tìm kênh tương ứng, phương thức search.list(part="snippet", type="channel", q="display name")
sẽ rất hữu ích. Bạn nên chuẩn bị để đối phó với khả năng cuộc gọi trả về nhiều mục trong phản hồi, vì tên hiển thị không phải là duy nhất.
Mã nhận dạng kênh trong API dữ liệu phiên bản 2
Lưu ý: API dữ liệu YouTube (v2) đã không được dùng nữa kể từ ngày 26 tháng 2 năm 2014 và API đã bị ngừng cung cấp. Các ứng dụng vẫn đang sử dụng API v2 sẽ chuyển sang API v3 ngay lập tức.
Bài học quan trọng nhất dành cho các nhà phát triển sử dụng Data API phiên bản 2 là bạn cần lưu ý rằng không phải kênh YouTube nào cũng có tên người dùng riêng biệt. May mắn là mỗi kênh YouTube đều được đảm bảo có một ID kênh duy nhất được liên kết với nó, được thể hiện bằng giá trị trong thẻ <yt:channelId>
và đó là giá trị mà chúng tôi khuyên các nhà phát triển nên sử dụng thay vì tên người dùng. Ví dụ: nếu bạn có cơ sở dữ liệu ánh xạ tên người dùng YouTube với thông tin về kênh đó thì các mục nhập cũ hơn của bạn sẽ tiếp tục hoạt động. (Các kênh hiện tại sẽ không mất tên người dùng của chúng.) Tuy nhiên, theo thời gian, ngày càng có nhiều khả năng bạn sẽ phải làm việc với các kênh không thể xác định duy nhất bằng tên người dùng.
Một vài yếu tố giúp đơn giản hóa quá trình chuyển đổi từ tên người dùng sang ID kênh. Trước tiên, API dữ liệu v2 chấp nhận ID kênh trong URL yêu cầu ở bất kỳ nơi nào chấp nhận tên người dùng YouTube, có nghĩa là bạn có thể hoán đổi liền mạch ID kênh vào mã hiện tại của mình. Ví dụ: vì UC_x5XG1OV2P6uZZ5FSM9Ttw
là mã nhận dạng kênh của kênh có tên người dùng cũ là GoogleDevelopers
, nên hai URL sau đây là các yêu cầu API tương đương:
https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1
https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1
Một điều khác cần lưu ý là bất cứ khi nào thực hiện yêu cầu xác thực v2, bạn không bao giờ cần bao gồm tên người dùng của kênh được ủy quyền khi tạo URL yêu cầu. Bạn luôn có thể sử dụng giá trị default
thay cho tên người dùng (hoặc ID kênh). Do đó, nếu bạn muốn truy xuất nguồn cấp dữ liệu video tải lên cho người dùng hiện được ủy quyền, bạn có thể thực hiện việc này tại https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1
.