无法从youtube播放列表中删除视频

时间:2012-12-24 22:22:04

标签: javascript ajax xmlhttprequest youtube-api

我正在尝试从Youtube播放列表中删除视频,但服务器会继续响应:

<errors xmlns='http://schemas.google.com/g/2005'>
    <error>
        <domain>GData</domain>
        <code>ServiceForbiddenException</code>
        <internalReason>User authentication required.</internalReason>
    </error>
</errors>

奇怪的是我可以删除播放列表并将视频添加到播放列表。 我正在关注此处的Google文档:

https://developers.google.com/youtube/2.0/developers_guide_protocol_playlists#Deleting_a_video_from_a_playlist

我正在使用这样的请求:

URL

删除https://gdata.youtube.com/feeds/api/playlists/PLAYLIST_ID/VIDEO_ID

删除https://gdata.youtube.com/feeds/api/playlists/PLZsHJpFf2dLtEhsYEISc2FR2JWYeIC8KZ/IcxQznDe4u8

标题:(我对所有请求使用完全相同的标题)

Authorization:  Bearer ************************
Content-Type:   application/atom+xml
Host:           gdata.youtube.com
X-GData-Key:    key=***************************
gdata-version:  2

另一个奇怪的事情是,当我在地址中输入请求网址时,它说“未找到播放列表视频” 我已经提供了Youtube视频ID。 Mebbe不是我需要提供的id。我尝试了播放列表索引,即只是一个数字。没运气。 HALP!

1 个答案:

答案 0 :(得分:3)

请允许我回答我自己的问题。

在链接的文档中,他们声明您需要 PLAYLIST_ENTRY_ID ,这与在Youtube上的地址中写入的 id 不同。此 id 来自您通过Feed请求请求的条目。每个条目(每个视频)都有一个名为 id 的属性(它位于feed - &gt; entry - &gt; id [text]),其中包含以下内容:

tag:youtube.com,2008:playlist:PLZsHJpFf2dLs_n7e69v5SUNQRuZTMnLcM:PLhRVbNPJX-c0PUOsjeulCsgAx-ydeUUdJhpxbacX0VFk

在这种情况下可以理解为

bla:bla:bla:PLAYLIST_ID:PLAYLIST_ENTRY_ID

所以我正在照看的id是最后一个冒号之后的其余字符串。 在Javascript中,我这样获取它:(我正在使用xml到json解析器,但它是 .split(“:”)。pop(),它将为您提供所需的 id

var deleteId=json.feed.entry[i]["id"]["#text"].split(":").pop();

在这种情况下,id结果id为: PLhRVbNPJX-c0PUOsjeulCsgAx-ydeUUdJhpxbacX0VFk

所以ytId IcxQznDe4u8视频的最终请求网址 不是

https://gdata.youtube.com/feeds/api/playlists/PLZsHJpFf2dLtEhsYEISc2FR2JWYeIC8KZ/IcxQznDe4u8

但是

https://gdata.youtube.com/feeds/api/playlists/PLZsHJpFf2dLtEhsYEISc2FR2JWYeIC8KZ/PLhRVbNPJX-c0PUOsjeulCsgAx-ydeUUdJhpxbacX0VFk

*飞走了*