因此,我設法建立了oauth 2.0 youtube視頻上傳,但每次我上傳視頻時,我都會收到HTTP 400錯誤,並顯示無效請求。Youtube Oauth 2.0 API視頻上傳失敗
但最奇怪的是,視頻正在上傳到YouTube,同時有:失敗(上傳中止)。
即時通訊不使用任何框架,導致谷歌沒有任何oauth 2.0,所以我建立了我自己的所有代碼。
而且我確實設法發送評論和東西....唯一的問題是視頻上傳本身。
我的代碼:
public function uploadVideo($video, $title, $description, $category, $keywords) {
$url = 'http://uploads.gdata.youtube.com/feeds/api/users/FacebookDevelopersIL/uploads';
$boundary = uniqid();
$accessToken = $this->refreshAccessToken("13", "11313", 'REFRESHTOKEN');
$xmlString = "<?xml version='1.0'?><entry xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/' xmlns:yt='http://gdata.youtube.com/schemas/2007'><media:group><media:title type='plain'>".$title."</media:title><media:description type='plain'>".$description."</media:description> <media:category scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>".$category."</media:category><media:keywords>".$keywords."</media:keywords></media:group></entry>";
$videoData = file_get_contents($video);
$headers = array(
'POST /feeds/api/users/FacebookDevelopersIL/uploads HTTP/1.1',
'Host: uploads.gdata.youtube.com',
'Authorization: Bearer '.$accessToken,
'GData-Version: 2',
'X-GData-Key: key='.YOUTUBE_SRM_DEVELOPER_KEY,
'Slug: IMG_0047.mp4',
'Content-Type: multipart/related; boundary='.$boundary,
'Content-Length:'.strlen($videoData),
'Connection: close'
);
$postData = "--".$boundary . "\r\n"
."Content-Type: application/atom+xml; charset=UTF-8\r\n\r\n"
.$xmlString . "\r\n"
."--".$boundary . "\r\n"
."Content-Type: video/mp4\r\n"
."Content-Transfer-Encoding: binary\r\n\r\n"
.$videoData . "\r\n"
."--".$boundary . "--";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
$response = curl_exec($ch);
curl_close($ch);
Trace::dump($response); }
錯誤即時得到:HTTP/1.1 400錯誤的請求服務器:HTTP上傳服務器構建於2012年5月7日18時16分42秒(1336439802)的Content-Type:text/html的; charset = UTF-8 X-GUploader-UploadID:AEnB2Uq7cHcf6rS4bcamu18ChAF3gnKJqsF6U_dk2qB4WR9GhAoTL_-iUejitgead-Gh-1fpJcke1z68TAxoopS2vYiGmCW69A Date:Thu,10 May 2012 11:55:24 GMT Pragma:no-cache過期時間:星期五,01 Jan 1990 00:00:00 GMT Cache - 控制:無緩存,無店鋪,必重新驗證的Content-Length:15:接近
無效請求
感謝名單大家!
現在即時得到這個問題(與您的代碼): 畸形多交.....這是什麼意思? – Avihay
我假設錯誤是因爲$ content變量中的文本未被正確組裝。我使用的是Linux主機,如果您使用的是Windows主機,則行結束符不同並可能導致問題。你確認file_get_contents()可以讀取$ video_file指向的文件嗎?在函數聲明上面的註釋中有一個鏈接,它有一個示例,說明完成的$內容應該是什麼樣的,以及所需的頭文件。也許仔細比較它和你所擁有的將會揭示這個問題。 – Carl
carl,即時通訊使用debian主機,所以操作系統不是一個問題:)我確認即時通訊獲取文件的內容,一切都很順利,就像你組裝的函數一樣....這完全是奇怪的。 .. – Avihay