Запуск в parseError, пытающийся выполнить «запуск возобновляемого сеанса». API данных YouTube - возобновляемая загрузка документации.API данных YouTube - возобновляемые загрузки - запуск возобновляемого сеанса - ошибки
полный перечень усилий, ответ и код
- Я прочитал на API, Google - «Глобальные ошибки домена» страницы «parseError Сервер API не может разобрать тело запроса.»
- Я наблюдал за «YouTube Разработчики Live: Отладка & Работы с ошибками» все еще знает, ключ там
- Я прочитал «не стопку потока» для подобных вопросов, но никогда не получить ответ, или ответы на все еще ООН ясно
- тестовая учетная запись youtube, которую я хочу загрузить, имеет канал YouTube с видеороликами
- Я попробовал API загрузки PHP для клиента, но позже выяснил, что это не возобновляемая загрузка.
- Я думал, что возобновляемая upoad будет лучшим вариантом, так что я не разочаровывают пользователей, путем тратить там время, если соединение выпадает ....
- Я подножка PHP с Hostgator счета
- Я заметил, как, когда я не получил ошибку, она вернет регулярные фрагменты и данные о статусе, а не данные «Шаг 2 - Сохранить возобновляемые URI»
- Я использую долгоживущие токены доступа, извлеченные из моей базы данных ... в запросах , у пользователя youtube есть канал с видео до того, как я сохранил токены доступа
- Я проверяю токены доступа с помощью tokeninfo?
- я заметил изменение "uploadType" на "uploadtype" будет производить "сообщение": «Тип носителя 'приложение/JSON, кодировка = UTF-8'
не поддерживаются типы Правильных СМИ:. [Видео/*, application/octet-stream] ", после этой ошибки путем изменения типа контента на" application/octet-stream "будет возвращен" kind = youtube # video
объект с фрагментом json, статус "не шаг 2 - сохранить возобновляемый URI сеанса, поэтому я изменил ситуацию на «uploadType» и «application/json; charset = utf-8», теперь столкнувшись с такой же ошибкой разбора
- Я замечаю в docs «Значения параметров в URL-адресе запроса должны быть закодированы в URL». когда я буду urlencode() «Значения параметров», он вернет ошибки или parseError, когда я удалю функцию urlencode
- Даже изменение «Host: www.googleapis.com» на «Host: https://www.googleapis.com» приведет к созданию «Запрошенный URL/upload/youtube/v3/videos не было найдено на этом сервере. Это все, что мы знаем."
- ошибка синтаксического анализа, как представляется, наиболее стойких до сих пор
- я изменил UrlEncode() для rawurlencode() по-прежнему ошибка разбора
- я хотел бы добавить Charset = UTF-8; многослойную/форм-данных; приложения/октет -stream в заголовок типа содержимого, по-прежнему анализировать ошибки
- Я замечаю тип контента на строку текстов/равнину; Charset = US-ASCII не уверен, что если сервер Google ожидает, что чистое Приложение/JSon
любая помощь будет большим ...
Array
(
[response] => Array
(
[0] => {
"error": {
"errors": [
{
"domain": "global",
"reason": "parseError",
"message": "Parse Error"
}
],
"code": 400,
"message": "Parse Error"
}
}
)
[headers] => [
"POST \/upload\/youtube\/v3\/videos?uploadType=resumable&part=snippet,status HTTP\/1.1",
"Host: www.googleapis.com",
"Authorization: Bearer ya29.vAAY5n3SJq3uCG7z4tOhehDxYj9Z7mxFENtD5PKF_dJqFlLqwCktRHTrEJkUgY_NrJD3KMetKeBA_w",
"Content-Length: 303",
"Content-Type: application\/json; charset=utf-8",
"X-Upload-Content-Length: 20121",
"X-Upload-Content-Type: video\/*"
]
[curl_resource] => Resource id #18
[video_aray] => {
"snippet": {
"title": "test video",
"description": "testing api",
"tags": [
"any",
"thing"
],
"categoryId": 25
},
"status": {
"privacyStatus": "public",
"embeddable": true,
"license": "youtube"
}
}
[json_requestbody] => {
"snippet": {
"title": "test video",
"description": "testing api",
"tags": [
"any",
"thing"
],
"categoryId": 25
},
"status": {
"privacyStatus": "public",
"embeddable": true,
"license": "youtube"
}
}
[request_url] => https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status
[content_type_of_request] => text/plain; charset=us-ascii
[0] => text/plain; charset=us-ascii
[1] => text/plain; charset=us-ascii
)
Источник
public function startResumableSession()
{
$videoResource = array('snippet'=>array('title'=>"test video",'description'=>"testing api",
'tags'=>array("any","thing"),'categoryId'=>25),
'status'=>array('privacyStatus'=>"public",'embeddable'=>True,'license'=>"youtube"));
$requestBody = json_encode($videoResource,JSON_PRETTY_PRINT);
$headers = array
(
"POST /upload/youtube/v3/videos?uploadType=resumable&part=snippet,status HTTP/1.1",
"Host: www.googleapis.com",
"Authorization: Bearer ya29.vAAY5n3SJq3uCG7z4tOhehDxYj9Z7mxFENtD5PKF_dJqFlLqwCktRHTrEJkUgY_NrJD3KMetKeBA_w",
"Content-Length: ".strlen($requestBody),
"Content-Type: application/json; charset=utf-8",
"X-Upload-Content-Length: 20121",
"X-Upload-Content-Type: video/*"
);
/* Parameter values in the request URL must be URL-encoded. */
$url = "https://www.googleapis.com/upload/youtube/v3/videos?uploadType=resumable&part=snippet,status";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_POSTFIELDS,urlencode($requestBody));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,TRUE);
$result = curl_exec($ch);
$json = json_decode($result);
/* Check request body contenttype */
$finfo = new finfo(FILEINFO_MIME);
$t1= $finfo->buffer($requestBody);
$t2 = $finfo->buffer("test");
$t3 = $finfo->buffer(utf8_encode("test"));
/* debug info */
return array( 'response'=>(array)$result,
'headers'=>json_encode($headers,JSON_PRETTY_PRINT),
'curl_resource'=>$ch,
'video_aray'=>json_encode($videoResource,JSON_PRETTY_PRINT),
'json_requestbody'=>$requestBody,
'request_url'=>$url,
'content_type_of_request'=>$t1,$t2,$t3
);
}
Да уж запрос работает, но не возвращает ссылку местоположения .... «возобновляемой загрузка Youtube API V3, статус 200, а не возвращать URI, чтобы загрузить файл» Кто-то имело такую же проблему еще в мае ... и вопрос остается без ответа, заставляет вас задаться вопросом, что люди действительно делают на YouTube и Google. Какая трата времени ... винт, я попробую vimeo upload api, по крайней мере, у них есть техническая поддержка ... –