php – Youtube API(无效请求)有什么问题?
发布时间:2020-12-13 16:12:16 所属栏目:PHP教程 来源:网络整理
导读:当我尝试使用youtube API上传视频时,收到错误“无效请求”. 但! 当我上传任何“图像”而不是“视频”时,它会返回状态“200”和视频ID. 为什么我无法上传视频? $eq = 'accountType=HOSTED_OR_GOOGLEEmail='.$YOUTUBE_EMAIL.'Passwd='.$YOUTUBE_PASS.'servic
当我尝试使用youtube API上传视频时,收到错误“无效请求”.
但! 当我上传任何“图像”而不是“视频”时,它会返回状态“200”和视频ID. 为什么我无法上传视频? $eq = 'accountType=HOSTED_OR_GOOGLE&Email='.$YOUTUBE_EMAIL.'&Passwd='.$YOUTUBE_PASS.'&service=youtube&source='.$API_NAME; if ($fp = fsockopen ("ssl://www.google.com",443,$errno,$errstr,20)) { $request ="POST /youtube/accounts/ClientLogin HTTP/1.0rn"; $request.="Host: www.google.comrn"; $request.="Content-Type:application/x-www-form-urlencodedrn"; $request.="Content-Length: ".strlen($eq)."rn"; $request.="rnrn"; $request.=$eq; fwrite($fp,$request,strlen($request)); while (!feof($fp)) $response.=fread($fp,8192); //fclose($fp); } preg_match("!(.*?)Auth=(.*?)n!si",$response,$ok); $AUTH_TOKEN = $ok[2]; $data = "<?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'>test</media:title> <media:description type='plain'>test</media:description> <media:category scheme='http://gdata.youtube.com/schema /2007/categories.cat'>People</media:category> <media:keywords>toast,wedding</media:keywords> </media:group> </entry> "; if ($fp = fsockopen ("gdata.youtube.com",80,20)) { $request ="POST /action/GetUploadToken HTTP/1.1rn"; $request.="Host: gdata.youtube.comrn"; $request.="Content-Type: application/atom+xml; charset=UTF-8rn"; $request.="Content-Length: ".strlen($data)."rn"; $request .="Authorization: GoogleLogin auth=".$AUTH_TOKEN."rn"; $request.="X-GData-Client: ".$API_NAME." rn"; $request.="X-GData-Key: key=".$API_KEY." rn"; $request.="rn"; $request.=$data."rn"; socket_set_timeout($fp,10); fputs($fp,strlen($request)); $response = fread($fp,3280); fclose($fp); } preg_match('|<url>(.*)</url>|Uis',$url); preg_match('|<token>(.*)</token>|Uis',$token); print " <form action='".$url[1]."?nexturl=http%3A%2F%2Fwww.google.com' method='post' enctype='multipart/form-data'> <input type='file' name='file'> <input type='hidden' name='token' value='".$token[1]."'> <input type='submit' value='go'> </form> "; 解决方法
哈哈哈!差不多一年后,我想我找到了修复.
你的行在“/ schema”之后和“/ 2007”之前有一个空格 <media:category scheme='http://gdata.youtube.com/schema /2007/categories.cat'>People</media:category> 它应该是 <media:category scheme='http://gdata.youtube.com/schema/2007/categories.cat'>People</media:category> 请参阅下面的第二个代码块:https://developers.google.com/youtube/2.0/developers_guide_protocol_direct_uploading#Sending_a_Direct_Upload_API_Request (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |