0

PHP Curl を使用して動画をアップロードしていますが、うまく機能します。ビデオを削除しようとすると、次のようになります。

HTTP メソッド DELETE はこの URL ではサポートされていません - エラー 405

$headers = array("Authorization: GoogleLogin auth=".$authvalue,
             "GData-Version: 2",
             "Content-Type: application/atom+xml; charset=UTF-8",
             "DELETE /feeds/api/users/".$username."/uploads/".$videoid." HTTP/1.1");

$curl = curl_init("http://gdata.youtube.com");
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POST, 0);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_REFERER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_HEADER, 0);
 $b = curl_exec($curl);    
4

1 に答える 1

2

まず、アカウントにアップロードされたすべての動画の YouTube ID のリストが必要です。

  1. これを行うために必要な最初のリクエストは、アップロードした動画のプレイリストの ID を取得することです。

    これは、次の URL への GET リクエストです。

    "https://www.googleapis.com/youtube/v3/channels"
    

    ヘッダー付き:

    "Content-type": "application/json",
    "Authorization": "Bearer %s" % {YOUR ACCESS TOKEN}
    

    およびパラメータ:

    "part": "contentDetails",
    "mine": "true",
    "key": {YOUR APPLICATION KEY}
    

    アクセスする応答から:

    response_body["items"][0][contentDetails][relatedPlaylists][アップロード]

  2. 2 番目のリクエストは、アップロード プレイリストにある動画のすべての ID を取得することです。

    これを開始するには、URL への GET リクエストを使用します。

    "https://www.googleapis.com/youtube/v3/playlistItems"
    

    ヘッダーの送信:

    "Content-type": "application/json",
    "Authorization": "Bearer %s" % {YOUR AUTH TOKEN}
    

    およびパラメータ:

    "part": "snippet",
    "maxResults": {MAX 50 -- PAGINATION IS NEEDED},
    "playlistId": {FROM ABOVE},
    "key": {YOUR API KEY}
    

    これから、response_body["items"] (i) 各アイテムから解析し、youtube id フィールドを保存します。

    response_body["items][i]["snippet"]["resourceId"]["videoId"]
    

    応答に response_body["nextPageToken"] が含まれている場合は、パラメーター "pageToken": {NEXT PAGE TOKEN} を使用して要求を再送信し、ページ分割された残りの結果を取得する必要があります。

  3. YouTube API を使用して動画を削除するには、動画ごとに 1 つの DELETE リクエストを行う必要があります。次の URL を使用します。

    "https://www.googleapis.com/youtube/v3/videos"
    

    2 つのヘッダーを送信します。

    "Content-type": "application/json",
    "Authorization": "Bearer %s" % {YOUR VALID ACCESS TOKEN}
    

    1 つのパラメーターを送信します。

    "id": {THE YOUTUBE ID FOR THE VIDEO}
    

    成功すると、204 Deleted または 404 Not Found が返されます。

    500、502、503、504 の応答を受け取った場合は、(少し待ってから) 要求を再試行する必要があります。

于 2013-06-26T23:31:18.060 に答える