使用YouTube API通过电子邮件或用户名获取用户YouTube播放列表

时间:2016-05-03 15:56:50

标签: javascript angularjs youtube-api

我正在使用最新的YouTube API(我相信v3)。这是我从https://developers.google.com/youtube/v3/docs/开始的文档。

我可以通过在javascript中进行此调用来获取具有频道ID的用户YouTube播放列表:

function getPlaylists(channelId) {
    return $.get("https://www.googleapis.com/youtube/v3/playlists", { part: 'snippet', channelId: channelId, key: key });
}

当我有播放列表时,我可以获取每个播放列表的PlaylistID属性。使用PlaylistID我可以使用javascript代码获取播放列表的所有视频:

function getPlaylistVideos(playlistId) {
    return $.get('https://www.googleapis.com/youtube/v3/playlistItems', { part: 'snippet', playlistId: playlistId, key: key });
}

我真的不喜欢我必须让用户尝试找到他们的ChannelId来提取他们的播放列表。我希望能够让用户只是传递他们的电子邮件或用户名来执行此操作。这可能吗?是否可以不使用YouTube身份验证?如果没有,是否有关于使用YouTube身份验证服务的良好来源?

1 个答案:

答案 0 :(得分:2)

您可以通过三个步骤为用户名执行此操作,当然电子邮件需要Oauth2,因此无法实现。

第1步

使用资源part: 'snippet' forUsername: 'GoogleDevelopers'

的YouTube API v3

使用此参数可以使用用户名获取频道的频道ID:

"items": [
  {
   "kind": "youtube#channel",
   "etag": "\"kiOs9cZLH2FUp6r6KJ8eyq_LIOk/lVXRA_GH5DhBajCt1cOeuB4TWbw\"",
   "id": "UC_x5XG1OV2P6uZZ5FSM9Ttw",

你得到:

UC_x5XG1OV2P6uZZ5FSM9Ttw

现在您获得了频道playlist.list

的ID

第2步

使用资源part: 'snippet' channelId: 'UC_x5XG1OV2P6uZZ5FSM9Ttw'

的YouTube API v3

使用此参数获取频道的所有播放列表ID:

"items": [
  {
   "kind": "youtube#playlist",
   "etag": "\"kiOs9cZLH2FUp6r6KJ8eyq_LIOk/sxN5XCGvIn_Rnsan74s_A_k16L8\"",
   "id": "PLOU2XLYxmsIKXYR_3iOWnI4h1Do_aa8dn",

您可以获得所有播放列表ID

playlist.list

现在第3步

使用资源part: 'snippet' playlistId: 'PLOU2XLYxmsIKXYR_3iOWnI4h1Do_aa8dn'

的YouTube API v3

使用此参数将视频转换为频道的播放列表ID:

"items": [
  {
   "kind": "youtube#playlistItem",
   "etag": "\"kiOs9cZLH2FUp6r6KJ8eyq_LIOk/WFwMbOGG8nLHKF8tH1W41WNFJBk\"",
   "id": "UExPVTJYTFl4bXNJS1hZUl8zaU9Xbkk0aDFEb19hYThkbi41NkI0NEY2RDEwNTU3Q0M2",
   "snippet": {
    "publishedAt": "2016-04-18T17:33:55.000Z",
    "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    "title": "#Love4Dev - What Magnus Hyttsten loves most about the power of mobile APIs",

您可以获得所有播放列表ID

var h = document.getElementsByTagName('head')[0],
s = document.createElement('script').setAttribute("type", "text/javascript").setAttribute("src","file.js");
h.appendChild(s);

您可以获得该播放列表中的所有视频;

重要的部分是第一步,用户只需输入其频道的用户名,例如我的例子:https://www.youtube.com/user/GoogleDevelopers