API YouTube Удалить видео с помощью логина клиента - PullRequest
1 голос
/ 16 июля 2011

Я использую API YouTube с ClientLogin на PHP и cURL.

Я отправил запрос следующим образом:

DELETE /feeds/api/users/USERNAME/uploads/VIDEO_ID HTTP/1.1
Host: gdata.youtube.com
Content-Type: application/atom+xml
Authorization: GoogleLogin auth="AUTHORIZATION_TOKEN"
GData-Version: 2
X-GData-Key: key=DEVELOPER_KEY

Я получил всю информацию об этом видео в формате atom + xmlв качестве ответа.

Это правильный ответ?

Через 1,5 часа я не могу увидеть это видео удаленным.

Не нашел конкретного примера удаления видео с ClientLoginAPI.

Система была реализована с помощью ClientLogin до ноября 2010 года.

Теперь я вижу в справке YouTube API, что этот метод не рекомендуется.http://code.google.com/apis/youtube/2.0/developers_guide_protocol_clientlogin.html

Кто-нибудь может помочь решить эту проблему с помощью метода ClientLogin?

Библиотека Zend с ClientLogin работает нормально.

Я копался в библиотеке Zend для YouTube API ClientLogin и нашелчто он использует stream_socket_client для запроса API.

Я извлек основной код здесь:

$context = stream_context_create();

$socket = stream_socket_client('tcp://gdata.youtube.com:80', $errno, $errstr, 10, 4, $context);

stream_set_timeout($socket, 10); // To set a timeout for reading/writing data over the socket

$request =  "DELETE /feeds/users/".$_SESSION["youTubeUser"]."/uploads/".$videoId." HTTP/1.1".PHP_EOL."
             Host: gdata.youtube.com".PHP_EOL."
             Connection: close".PHP_EOL."
             X-GData-Key: key=".DEVELOPER_KEY.PHP_EOL."
             Authorization: GoogleLogin auth=".$authKey.PHP_EOL."
             Accept-encoding: identity".PHP_EOL."
             Content-Type: application/atom+xml".PHP_EOL."
             Content-Length: 0".PHP_EOL.PHP_EOL;

fwrite($socket, $request);

while (($line = fgets($socket)) !== false) {
    $gotStatus = $gotStatus || (strpos($line, 'HTTP') !== false);
    if ($gotStatus) {
        $rspns .= $line;
        if (rtrim($line) === '') break;
    }
}

echo $errno." => ".$errstr."<br />Response: ";var_dump($rspns); exit;

в качестве ответа я получаю:

HTTP/1.1 405 Method Not Allowed Content-Type: text/html; charset=UTF-8 Content-Length: 11858 Date: Fri, 22 Jul 2011 10:59:05 GMT Server: GFE/2.0

Теперь можнокто-нибудь поймать что-нибудь ..?

1 Ответ

0 голосов
/ 08 августа 2011

Я только что попытался удалить видео YouTube, отправив запрос DELETE, аутентифицированный с помощью ClientLogin, и он работал правильно.

Отправляете ли вы какой-либо контент в теле вашего запроса?УДАЛИТЬ звонки не занимают никакой полезной нагрузки.Для справки, вот мой запрос и ответ:

DELETE https://gdata.youtube.com/feeds/api/users/USERNAME/uploads/VIDEO_ID HTTP/1.1
Content-Type: application/atom+xml; charset=UTF-8
X-GData-Key: key=DEVELOPER-KEY
Authorization: GoogleLogin auth=DQAA...
GData-Version: 2.0
Host: gdata.youtube.com


HTTP/1.1 200 OK
GData-Version: 2.0
Date: Mon, 08 Aug 2011 18:23:52 GMT
Expires: Mon, 08 Aug 2011 18:23:52 GMT
Cache-Control: private, max-age=0
Content-Length: 0
Server: GSE
Content-Type: text/html
...