Youtube — просмотр приватных видео при «авторизации» через API с учетной записью владельца

Можно ли просматривать свои личные видео на веб-странице, войдя в систему через API YouTube?

Поэтому, если у меня есть сеанс с проверкой подлинности на странице, я могу воспроизвести свое личное видео, выполнив что-то вроде: http://www.youtube.com/embed/gYD0lKSIwxY ?


person Owen    schedule 04.10.2011    source источник
comment
Я могу обойти это, установив видео как «не в списке», что почти так же хорошо, как «частное», и поэтому не нужно входить в систему.   -  person Owen    schedule 05.10.2011
comment
как загрузить видео как незарегистрированное... не могли бы вы опубликовать код, пожалуйста.   -  person MANISHDAN LANGA    schedule 31.01.2012


Ответы (1)


Вот как я меняю статус видео. Это позволяет мне изменить личное видео на незарегистрированное, чтобы я мог просматривать его со своего сайта. Я использую таймер javascript и ajax, чтобы изменить его обратно на частный ПОСЛЕ того, как он начал играть.

<?php
/**
 * Change the status of a video on youtube
 */
if (isset($_POST['video_id'])) {

    $video_id = stripslashes(strip_tags($_POST['video_id']));
    $status = (isset($_POST['status'])) ? stripslashes(strip_tags($_POST['status'])) : 'private';
    $sessionToken = 'your_session_token';
    define('YT_DEVELOPER_KEY', 'your_developer_key');

    $uploadURL = $uploadToken = null;

    try {
    $hCurl = curl_init();

    if (!$hCurl)
        throw new Exception('Failed to create cURL object');

    $videoPrivate = <<<mof
        <entry xmlns='http://www.w3.org/2005/Atom'
                xmlns:media='http://search.yahoo.com/mrss/'
                xmlns:yt='http://gdata.youtube.com/schemas/2007'
                xmlns:gd='http://schemas.google.com/g/2005'
                gd:fields='media:group/yt:private'>
            <media:group>
                <yt:private/>
            </media:group>
        </entry>
mof;
    $videoUnlistedNotPrivate = <<<mof
        <entry xmlns='http://www.w3.org/2005/Atom'
            xmlns:yt='http://gdata.youtube.com/schemas/2007'
            xmlns:gd='http://schemas.google.com/g/2005'
            gd:fields='media:group(yt:private),yt:accessControl'>
          <yt:accessControl action='comment' permission='allowed'/>
          <yt:accessControl action='commentVote' permission='allowed'/>
          <yt:accessControl action='embed' permission='allowed'/>
          <yt:accessControl action='rate' permission='allowed'/>
          <yt:accessControl action='list' permission='denied'/>
          <yt:accessControl action='syndicate' permission='allowed'/>
          <yt:accessControl action='videoRespond' permission='allowed'/>
        </entry>
mof;

    // send email for testing purposes
    if ($status == 'private') {
        mail('[email protected]', 'VI test', 'setting private', 'from: [email protected]');
        $videoMeta = $videoPrivate;
    } else {
        $videoMeta = $videoUnlistedNotPrivate;
        mail('[email protected]', 'VI test', 'setting unlisted', 'from: [email protected]');
    }


    $contentLength = strlen($videoMeta);
    $respData = null;

    $url = 'http://gdata.youtube.com/feeds/api/users/YourYouTubeName/uploads/' . $video_id;

    $ops = array(
        CURLOPT_URL => $url,
        CURLOPT_POST => true,
        CURLOPT_CUSTOMREQUEST => 'PATCH',
        CURLOPT_FOLLOWLOCATION => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_MAXREDIRS => 1,
        CURLOPT_HTTPHEADER => array(
        'Authorization: AuthSub token="' . $sessionToken . '"',
        'GData-Version: 2',
        'Content-Length: ' . $contentLength,
        'Content-Type: application/xml',
        'X-GData-Key: key=' . YT_DEVELOPER_KEY,
        ),
        CURLOPT_POSTFIELDS => $videoMeta
    );

    curl_setopt_array($hCurl, $ops);

    // fetch and parse the response to get upload URL and token
    if (($respData = curl_exec($hCurl)) === false) {
        throw new Exception('cURL returned an error while uploading video metadata: ' . curl_error($hCurl));
    }

    } catch (Exception $e) {
    echo $e->getMessage();
    exit;
    }
}
?>
person Owen    schedule 08.02.2012