チャンネル ID を操作する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Jeff Posnick、YouTube デベロッパー リレーションズ – 2013 年 6 月
Google+ プロフィールと YouTube チャンネルをリンクできることは 1 年以上前から可能で、そのプロフィールのリンクによって Data API v2 のレスポンスの一部がどのように変化したかについては、ブログで説明しています。最近では、従来の YouTube ユーザー名が関連付けられていない新しい YouTube チャンネルを作成できるようになりました。代わりに、Google+ プロフィールのみで識別されます。以前のブログ投稿の情報の多くは引き続き適用されますが、この追加の変更により、YouTube チャンネルに関する基本的な前提条件(各チャンネルが常に一意の YouTube ユーザー名に関連付けられるなど)が一部無効になります。そこで、すべての種類のチャンネルで動作するコードを記述するためのベスト プラクティスをいくつか追加でご紹介します。
Data API v3 のチャンネル ID
チャンネルを操作するすべての v3 オペレーションでは、チャンネルの識別手段としてチャンネル ID のみが使用されます。特定の YouTube ユーザーのチャンネルの ID は、API の v2 と v3 の両方で同じであるため、バージョン間の移行が容易になります。チャンネル ID に完全に依存するこの仕様は、以前は YouTube ユーザー名を API メソッドに渡していたデベロッパーにとっては混乱を招く可能性がありますが、v3 は以前のユーザー名が付いたチャンネルと付いていないチャンネルを同じように扱うように設計されているため、すべての場所でチャンネル ID を使用する必要があります。
v3 を使用していて、現在承認されているユーザーに対応するチャンネル ID を取得する場合は、channels.list(part="id", mine=true)
メソッドを呼び出します。これは、v2 で default
ユーザーのチャンネル プロファイルをリクエストするのと同じです。
任意の以前の YouTube ユーザー名を API の v3 を使用してチャンネル 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 が関連付けられています。この ID は <yt:channelId>
タグの値で表されます。この値は、ユーザー名の代わりにデベロッパーが使用することをおすすめします。たとえば、YouTube ユーザー名を関連するチャンネルについての情報にマッピングするデータベースを使用していても、古いエントリを引き続き使用することができます(既存のチャンネルのユーザー名がなくなるわけではないため)。ただし、今後はユーザー名で一意に識別できないチャンネルにも対応しなければならない可能性が高まっていくはずです。
ただし、2 つの要素を考慮すればユーザー名からチャンネル ID への移行は簡単です。まず、Data API v2 は、YouTube ユーザー名が許可されるすべてのリクエスト URL でチャンネル ID を受け入れます。つまり、チャンネル ID を既存のコードにシームレスに置き換えることができます。たとえば、UC_x5XG1OV2P6uZZ5FSM9Ttw
は以前のユーザー名 GoogleDevelopers
のチャンネルのチャンネル ID であるため、次の 2 つの URL は同等の 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 リクエストを送信する際は、リクエスト URL の作成時に、承認済みチャンネルのユーザー名を含める必要はありません。ユーザー名(またはチャンネル ID)の代わりに、常に値 default
を使用できます。たとえば、現在承認されているユーザーの動画アップロード フィードを取得するには、https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1
を使用します。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-11-23 UTC。
[null,null,["最終更新日 2024-11-23 UTC。"],[[["\u003cp\u003eYouTube channels can now be identified solely by their Google+ profile, without a traditional YouTube username.\u003c/p\u003e\n"],["\u003cp\u003eThe YouTube Data API v3 exclusively uses channel IDs to identify channels, offering consistency for channels with or without legacy usernames.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can use the \u003ccode\u003echannels.list\u003c/code\u003e method in v3 to retrieve a channel ID based on the authorized user or a legacy username.\u003c/p\u003e\n"],["\u003cp\u003eIn v2, it's crucial to recognize that not every YouTube channel has a unique username, but all have a unique channel ID, which is the recommended identifier.\u003c/p\u003e\n"],["\u003cp\u003eThe deprecated Data API v2 can use channel IDs in place of usernames in request URLs, and \u003ccode\u003edefault\u003c/code\u003e can be used instead of usernames for authenticated v2 requests.\u003c/p\u003e\n"]]],["YouTube introduced channels solely identified by Google+ profiles, lacking traditional usernames. Data API v3 exclusively uses channel IDs to identify channels, simplifying the process for developers. To get the authorized user's channel ID, use `channels.list(part=\"id\", mine=true)`. To translate a username to a channel ID, use `channels.list(part=\"id\", forUsername=\"username\")`. For display names, use `search.list(part=\"snippet\", type=\"channel\", q=\"display name\")`. Data API v2, now deprecated, also utilizes channel IDs, allowing them to replace usernames in requests.\n"],null,["# Work with Channel IDs\n\n*Jeff Posnick, YouTube Developer Relations -- June 2013*\nFor more than a year, it's been possible to link Google+ profiles with YouTube channels, and we've [blogged](http://apiblog.youtube.com/2012/03/youtube-google-api-and-you.html) about how some of the Data API v2 responses have changed as a result of that profile link. More recently, it has become possible to create new YouTube channels that don't have a traditional YouTube username associated with them and, instead, are [solely identified by their Google+ profile](http://youtubecreator.blogspot.com/2013/04/using-google-page-identity-on-youtube.html). Much of the information from that blog post still applies, but this extra wrinkle does invalidate some fundamental assumptions about YouTube channels -- like that each one will always be associated with a unique YouTube username -- and we wanted to follow up with some additional best practices to write code that works with all flavors of channels.\n\nChannel IDs in the Data API v3\n------------------------------\n\nAll v3 operations that work with channels use [channel IDs](/youtube/v3/docs/channels#id) exclusively as a means of identifying those channels. The ID for a specific YouTube user's channel is identical in both v2 and v3 of the API, simplifying migrations between versions. This complete reliance on channel IDs might be perplexing for developers who were previously used to passing YouTube usernames to API methods, but v3 was designed to treat channels with and without legacy usernames identically, and that means using channel IDs everywhere.\n\nIf you are using v3 and want to retrieve the channel ID that corresponds to the currently authorized user, you can call the [channels.list(part=\"id\", mine=true)](https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list?part=id&mine=true) method. This is equivalent to asking for the channel profile of the `default` user in v2.\n\nIf you ever do find yourself with an arbitrary legacy YouTube username that you need to translate into a channel ID using v3 of the API, you can make a [channels.list(part=\"id\", forUsername=\"\u003cvar class=\"apiparam\" translate=\"no\"\u003eusername\u003c/var\u003e\")](https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.channels.list?part=id&forUsername=YouTubeDev) call to the API.\n\nIf you only know a display name and are looking to find the corresponding channel, the [search.list(part=\"snippet\", type=\"channel\", q=\"\u003cvar class=\"apiparam\" translate=\"no\"\u003edisplay name\u003c/var\u003e\")](https://developers.google.com/apis-explorer/#p/youtube/v3/youtube.search.list?part=snippet&q=YouTube+for+Developers&type=channel) method will come in handy. You should be prepared to deal with the possibility of the call returning more than one item in the response, since display names are not unique.\n\nChannel IDs in the Data API v2\n------------------------------\n\n**Note:** The YouTube Data API (v2) has been deprecated since February 26, 2014, and the API has been [turned down](http://youtube-eng.blogspot.com/2015/04/bye-bye-youtube-data-api-v2.html). Applications still using the v2 API should migrate to the v3 API immediately.\n\nThe biggest takeaway for developers using the older [Data API v2](/youtube/2.0/developers_guide_protocol_audience) is that you must be aware that **not every YouTube channel has a unique username** . Fortunately, every YouTube channel is guaranteed to have a unique channel ID associated with it, represented by the value in the [`\u003cyt:channelId\u003e` tag](/youtube/2.0/reference#youtube_data_api_tag_yt:channelId), and that's the value that we recommend developers use instead of usernames. For instance, if you have a database that maps YouTube usernames to information about that channel, your older entries should continue to work. (Existing channels won't lose their usernames.) However, as time goes on, it will become more and more likely that you'll have to work with channels that can't be uniquely identified by a username.\n\nA couple of factors simplify the transition from usernames to channel IDs. First, the Data API v2 accepts channel IDs in request URLs wherever it accepts YouTube usernames, meaning that you can seamlessly swap a channel ID into your existing code. For example, since `UC_x5XG1OV2P6uZZ5FSM9Ttw` is the channel ID for the channel with the legacy username `GoogleDevelopers`, the following two URLs are equivalent API requests: \n\n https://gdata.youtube.com/feeds/api/users/GoogleDevelopers?v=2.1\n https://gdata.youtube.com/feeds/api/users/UC_x5XG1OV2P6uZZ5FSM9Ttw?v=2.1\n\nAnother thing to keep in mind is that whenever you're making [authenticated](/youtube/2.0/developers_guide_protocol_authentication) v2 requests, you never need to include the authorized channel's username when constructing request URLs. You can always use the value `default` in place of a username (or channel ID). So if you want to retrieve the video uploads feed for the currently authorized user, for instance, you can do so at `https://gdata.youtube.com/feeds/api/users/default/uploads?v=2.1`."]]