0

我正在使用 PHP Curl 上传视频,效果很好。当我尝试删除视频时,我不断收到此消息:

此 URL 不支持 Http 方法 DELETE - 错误 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][uploads]

  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 删除视频,您需要为每个视频发出一个 DELETE 请求。使用网址:

    "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 回答