我正在尝试从Youtube播放列表中删除视频,但服务器会继续响应:
<errors xmlns='http://schemas.google.com/g/2005'>
<error>
<domain>GData</domain>
<code>ServiceForbiddenException</code>
<internalReason>User authentication required.</internalReason>
</error>
</errors>
奇怪的是我可以删除播放列表并将视频添加到播放列表。 我正在关注此处的Google文档:
我正在使用这样的请求:
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!
答案 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
*飞走了*