3

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

もう1つの奇妙なことは、アドレスにリクエストURLを入力すると、「プレイリストビデオが見つかりません」と表示され、YoutubeビデオIDを提供したことです。私が提供する必要があるのはそのIDではありません。プレイリストのインデックス、つまり単なる数字で試しました。運がない。半分!

4

1 に答える 1

3

私自身の質問に答えさせてください。

リンクされたドキュメントで、Youtubeのアドレスに書かれているのと同じIDではないPLAYLIST_ENTRY_IDが必要であると彼らは述べています。このIDは、フィードリクエストを介してリクエストしたエントリから取得されます。すべてのエントリ(すべてのビデオ)には、次のようなものを含むid(フィード->エントリ-> id [text]にあります)という名前のプロパティがあります。

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

この場合、これは次のように理解できます。

bla:bla:bla:PLAYLIST_ID:PLAYLIST_ENTRY_ID

したがって、私が管理していたIDは、最後のコロンの後の文字列の残りの部分でした。Javascriptでは、次のようにフェッチしました:(jsonパーサーにxmlを使用していますが、目的のIDを提供するのは.split( ":")。pop()です)

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

この場合、結果のIDは次のようになります。PLhRVbNPJX-c0PUOsjeulCsgAx-ydeUUdJhpxbacX0VFk

したがって、ytIdIcxQznDe4u8のビデオの最終的なリクエストURLは

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

代わりに

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

*飛び去ります*

于 2012-12-25T19:15:32.070 に答える