使用頻道 ID

Jeff Posnick,YouTube 開發人員關係團隊成員 – 2013 年 6 月

過去一年多來,你已可將 Google+ 個人資料連結至 YouTube 頻道,我們也曾在部落格中說明,在連結個人資料後,部分 Data API v2 回應會有所變更。我們最近推出了新功能,讓你建立新的 YouTube 頻道時,不必使用傳統的 YouTube 使用者名稱,而是只透過 Google+ 個人資料識別。該篇部落格文章中的大部分資訊仍適用,但這項額外變更會讓我們對 YouTube 頻道的某些基本假設失效,例如每個頻道都會與一個獨特的 YouTube 使用者名稱相關聯。因此,我們想提供一些額外的最佳做法,讓您編寫的程式碼能支援所有類型的頻道。

Data API v3 中的頻道 ID

所有與頻道搭配運作的 v3 作業都會使用頻道 ID 來識別這些頻道。在 API 的 v2 和 v3 版本中,特定 YouTube 使用者頻道的 ID 都相同,因此可簡化版本間的遷移作業。對於先前習慣將 YouTube 使用者名稱傳遞至 API 方法的開發人員來說,這種完全仰賴頻道 ID 的做法可能會令人困惑,但 v3 版的設計目的是將有無舊版使用者名稱的頻道一視同仁,也就是說,在所有地方都使用頻道 ID。

如果您使用 v3 版,且想要擷取與目前授權使用者相對應的頻道 ID,可以呼叫 channels.list(part="id", mine=true) 方法。這等同於在 v2 中要求 default 使用者的頻道設定檔。

如果您使用的是任意舊版 YouTube 使用者名稱,而需要使用 API 3 版將其轉換為頻道 ID,可以對 API 發出 channels.list(part="id", forUsername="username") 呼叫。

如果您只知道顯示名稱,並想找出對應的管道,search.list(part="snippet", type="channel", q="display name") 方法就很實用。由於顯示名稱並非唯一,因此請準備好處理呼叫在回應中傳回多個項目的可能性。

Data API v2 中的頻道 ID

注意:YouTube Data API (v2) 已於 2014 年 2 月 26 日淘汰,且該 API 已關閉。仍使用 v2 API 的應用程式應立即改用 v3 API。

對於使用舊版 Data API v2 的開發人員來說,最重要的是並非每個 YouTube 頻道都有獨特的使用者名稱。幸好,每個 YouTube 頻道都會擁有專屬的頻道 ID,並以 <yt:channelId> 標記中的值表示,我們建議開發人員使用這個值,而非使用使用者名稱。舉例來說,如果您有資料庫,可將 YouTube 使用者名稱對應至該頻道的相關資訊,舊的項目應該會繼續運作。(現有頻道的使用者名稱不會受到影響)。不過,隨著時間的推移,你可能會越來越常遇到無法透過使用者名稱明確識別的頻道。

有幾個因素可簡化從使用者名稱改為頻道 ID 的轉換程序。首先,Data API v2 會在接受 YouTube 使用者名稱的情況下,接受請求網址中的頻道 ID,這表示您可以將頻道 ID 無縫地換到現有程式碼中。舉例來說,由於 UC_x5XG1OV2P6uZZ5FSM9Ttw 是使用舊版使用者名稱 GoogleDevelopers 的頻道頻道 ID,因此以下兩個網址是等價的 API 要求:

https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1
https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1

另外,請注意,無論您是否要發出已驗證的 v2 要求,在建立要求網址時,都不需要加入已授權頻道的使用者名稱。您可以隨時使用 default 值取代使用者名稱 (或頻道 ID)。舉例來說,如果您想擷取目前已授權使用者的影片上傳動態消息,可以前往 https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1 執行這項操作。