2013-08-21 2 views
4

Я бы хотел загрузить myVideo.avi на YouTube с помощью моей программы Qt5. Я успешно авторизуюсь через OAuth 2.0 и получаю access_token без ошибок.YouTube API v3 - загрузить видео

Но когда я пытаюсь использовать API https://developers.google.com/youtube/v3/docs/videos/insert Я получаю некоторые ошибки!

QString googleApiUrl = "https://www.googleapis.com/upload/youtube/v3/videos?access_token="+authorisation->getAccessToken()+"&part=snippet"; 

    QNetworkRequest request; 
    request.setUrl(QUrl(googleApiUrl)); 

    QHttpMultiPart *multiPart = new QHttpMultiPart(QHttpMultiPart::MixedType); 

    QHttpPart videoPart; 
    videoPart.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("video/*")); 
    videoPart.setHeader(QNetworkRequest::ContentDispositionHeader, QVariant("Slug")); 

    m_video = new QFile(m_filePath); 
    if (m_video->open(QIODevice::ReadOnly)) { 
     videoPart.setBodyDevice(m_video); 
    } 
    multiPart->append(videoPart); 


    m_networkManager = new QNetworkAccessManager(); 
    m_networkManager->post(request,multiPart); 
    connect(m_networkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(handleNetworkReply(QNetworkReply*))); 

response-

"Host requires authentication" 
"{ 
"error": { 
"errors": [ 
    { 
    "domain": "youtube.header", 
    "reason": "youtubeSignupRequired", 
    "message": "Unauthorized", 
    "locationType": "header", 
    "location": "Authorization" 
    } 
], 
"code": 401, 
"message": "Unauthorized" 
} 
} 
" 

Что я делаю не так?

+0

Я не вижу, как вы пройти через OAuth2 или применить свой токен в клиенте. –

ответ

1

youtubeSignupRequired означает, что вы проходите поток OAuth 2 и авторизуете доступ с помощью учетной записи Google, у которой еще нет связанного с ней канала YouTube. Я бы рекомендовал снова пройти поток и подтвердить, что вы разрешаете доступ с помощью правильной учетной записи.

В качестве сторонния, я рекомендую попросить https://github.com/google/google-api-cpp-client. Это довольно новое и может упростить ваш код, а также сделать необработанные HTTP-вызовы.

+0

спасибо, это работа! –

Смежные вопросы