我正在使用最新的 YouTube API(我认为是 v3)。这是我从 https://developers.google.com/youtube/v3/docs/ 获取的文档.
我可以通过在 javascript 中进行此调用来获取用户的 YouTube 播放列表以及 channel ID:
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 身份验证服务的良好来源?
最佳答案
您可以通过三步来完成用户名的操作,当然电子邮件需要 Oauth2,所以这是不可能的。
第 1 步
使用 YouTube API v3 和资源 channel.list
使用此参数获取具有用户名的 channel 的 channel ID:
part: 'snippet'
forUsername: 'GoogleDevelopers'
你得到:
"items": [
{
"kind": "youtube#channel",
"etag": "\"kiOs9cZLH2FUp6r6KJ8eyq_LIOk/lVXRA_GH5DhBajCt1cOeuB4TWbw\"",
"id": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
现在您获得了 channel 的 ID UC_x5XG1OV2P6uZZ5FSM9Ttw
第 2 步
使用 YouTube API v3 和资源 playlist.list
使用此参数获取 channel 的所有播放列表ID:
part: 'snippet'
channelId: 'UC_x5XG1OV2P6uZZ5FSM9Ttw'
你就得到了所有播放列表的id
"items": [
{
"kind": "youtube#playlist",
"etag": "\"kiOs9cZLH2FUp6r6KJ8eyq_LIOk/sxN5XCGvIn_Rnsan74s_A_k16L8\"",
"id": "PLOU2XLYxmsIKXYR_3iOWnI4h1Do_aa8dn",
现在第3步
使用 YouTube API v3 和资源 playlist.list
使用此参数将视频放入 channel 的 playlistID 中:
part: 'snippet'
playlistId: 'PLOU2XLYxmsIKXYR_3iOWnI4h1Do_aa8dn'
你就得到了所有播放列表的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",
您将获得该播放列表中的所有视频;
重要的部分是第一步,用户只需输入其 channel 的用户名,如我的示例:https://www.youtube.com/user/GoogleDevelopers
关于javascript - 使用 YouTube API 通过电子邮件或用户名获取用户 YouTube 播放列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37008885/