Làm việc với mã nhận dạng kênh

Jeff Posnick, Trưởng nhóm quan hệ đối tác nhà phát triển của YouTube – Tháng 6 năm 2013

Trong hơn một năm qua, bạn có thể liên kết hồ sơ Google+ với kênh YouTube. Chúng tôi đã đăng trên blog về cách một số phản hồi của Data API phiên bản 2 đã thay đổi do liên kết hồ sơ đó. Gần đây, bạn có thể tạo kênh YouTube mới không liên kết với tên người dùng YouTube truyền thống mà chỉ được xác định bằng hồ sơ Google+. Phần lớn thông tin trong bài đăng trên blog đó vẫn áp dụng, nhưng vấn đề này đã làm mất hiệu lực một số giả định cơ bản về kênh YouTube (chẳng hạn như mỗi kênh sẽ luôn được liên kết với một tên người dùng YouTube duy nhất). Vì vậy, chúng tôi muốn chia sẻ thêm một số phương pháp hay nhất để viết mã phù hợp với mọi loại kênh.

Mã nhận dạng kênh trong Data API phiên bản 3

Tất cả các thao tác v3 hoạt động với kênh đều sử dụng mã nhận dạng kênh để xác định các kênh đó. Mã nhận dạng cho kênh của một người dùng YouTube cụ thể giống nhau trong cả API phiên bản 2 và phiên bản 3, giúp đơn giản hoá việc di chuyển giữa các phiên bản. Việc hoàn toàn dựa vào mã nhận dạng kênh có thể gây khó khăn cho những nhà phát triển trước đây đã quen với việc truyền tên người dùng trên YouTube đến các phương thức API. 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, tức là sử dụng mã nhận dạng kênh ở mọi nơi.

Nếu đang sử dụng phiên bản 3 và muốn truy xuất mã nhận dạng kênh tương ứng với người dùng hiện được uỷ 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 có lúc bạn cần chuyển đổi tên người dùng YouTube cũ tuỳ ý thành mã nhận dạng kênh bằng API phiên bản 3, bạn có thể thực hiện lệnh gọi channels.list(part="id", forUsername="username") đến API.

Nếu bạn chỉ biết tên hiển thị và muốn tìm kênh tương ứng, thì 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ị để xử lý khả năng lệnh 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 Data API phiên bản 2

Lưu ý: Chúng tôi đã ngừng sử dụng YouTube Data API (phiên bản 2) kể từ ngày 26 tháng 2 năm 2014 và đã ngừng cung cấp API này. Các ứng dụng vẫn sử dụng API phiên bản 2 phải di chuyển sang API phiên bản 3 ngay lập tức.

Điểm quan trọng nhất mà nhà phát triển cần lưu ý khi sử dụng Data API v2 cũ là 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ột mã nhận dạng kênh riêng biệt được liên kết với kênh đó, được biểu thị bằng giá trị trong thẻ <yt:channelId>. Đây là giá trị mà 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 liên kết tên người dùng trên YouTube với thông tin về kênh đó, thì các mục cũ của bạn sẽ tiếp tục hoạt động. (Các kênh hiện có sẽ không mất tên người dùng.) Tuy nhiên, theo thời gian, bạn sẽ ngày càng phải làm việc với những kênh không thể xác định duy nhất bằng tên người dùng.

Có một số yếu tố giúp đơn giản hoá quá trình chuyển đổi từ tên người dùng sang mã nhận dạng kênh. Trước tiên, Data API v2 chấp nhận mã nhận dạng kênh trong URL yêu cầu bất cứ khi nào chấp nhận tên người dùng trên YouTube. Điều này có nghĩa là bạn có thể hoán đổi mã nhận dạng kênh vào mã hiện có một cách liền mạch. 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 tạo yêu cầu v2 đã xác thực, bạn không bao giờ cần thêm tên người dùng của kênh được uỷ 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 mã nhận dạng kênh). Ví dụ: nếu 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 uỷ 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.