API публикации Street View Ссылка на загрузку не найдена после загрузки метаданных

Я использую PHP для публикации панорамных изображений. Я следую за 3 шага в Документ Google и успешно получил PhotoID после загруженных метаданных, но когда я использую этот photoID для другого запроса, он возвращает «Ссылка на загрузку не найдена. Убедитесь, что вы загрузили файл на URL ссылки для загрузки. Если эта ошибка повторяется, запросите новую загрузить URL и повторить попытку «.

Вот мой код:

Получить URL для загрузки

$cur_upload_url = curl_init();
curl_setopt_array($cur_upload_url, array(
CURLOPT_URL => "https://streetviewpublish.googleapis.com/v1/photo:startUpload?key=$api_key",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "" ,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => array(
"authorization: Bearer $access_token",
"content-type: application/json",
"Content-Length: 0"),
));
$response = curl_exec($cur_upload_url);
echo $response;
$re = '/https?:\/\/[^"]*/';
$str = $response;
preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0);
$upload_url = $_SESSION['UploadRef'] = $matches[0][0];

Отклик:

{
"uploadUrl":"https://streetviewpublish.googleapis.com/media/user/104039888676357869012/photo/2857577503984652262"}

Загрузить фото для загрузки URL:

$cmd = exec("curl --request POST \
--url '$upload_url' \
--upload-file '$imagePath' \
--header 'Authorization: Bearer $access_token'", $outputAndErrors, $return_value);

Это ничего не вернуть.

Загрузить метаданные

$curl_meta = curl_init();
curl_setopt_array($curl_meta, array(
CURLOPT_URL => "https://streetviewpublish.googleapis.com/v1/photo?key=$api_key",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => '{
"uploadReference":
{
"uploadUrl": "'.$upload_url.'"},
"pose":
{
"heading": 95.0,
"latLngPair":
{
"latitude": '.$latVal.',
"longitude": '.$langVal.'
}
},
"captureTime":
{
"seconds":  '.$time_stamp.'
},
}',
CURLOPT_HTTPHEADER => array(
"authorization: Bearer $access_token",
"content-type: application/json"),
));
$response_meta = curl_exec($curl_meta);

отклик

{
"photoId":{
"id":"CAoSLEFGMVFpcE4wTDEycFl6S2xVOWtUWmlRVHZCSm90bHp6QUpRWVZ5QlNoWnF4"}
}

И когда я пытаюсь обновить соединение или запустить photo.create API:

$curl_meta = curl_init();
curl_setopt_array($curl_meta, array(
CURLOPT_URL => "https://streetviewpublish.googleapis.com/v1/photo?key=$api_key",
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => '{
"photoId": {
"id": "'.$photoID.'"},
"uploadReference": {
"uploadUrl": "'.$upload_url.'"},
"captureTime": "'.(new DateTime())->format('Y-m-d\TH:i:s\Z').'",
"connections": [],
"places": [],
"pose": {
"heading": 0
}
}',
CURLOPT_HTTPHEADER => array(
"authorization: Bearer $access_token",
"content-type: application/json"),
));
$response_meta = curl_exec($curl_meta);

Это ответ

{
"error":{
"code":404,
"message":"The upload reference cannot be found. Please make sure you have uploaded a file to the upload reference URL. If this error persists, request a new upload URL and try again.",
"status":"NOT_FOUND"}
}

Получить фотографию с возвращенным идентификатором photoID

exec('curl --request GET \
--url "'. addslashes('https://streetviewpublish.googleapis.com/v1/photo/'.$photoID.'?key='.$api_key) .'" \
--header "Authorization: Bearer '. addslashes($access_token) .'" ',
$outputAndErrors, $return_value);

отклик

"error":{
"code":404,
"message":"Image not found for id: CAoSLEFGMVFpcE9faE52aG95TTYtaENjd1NRX3BCU2l4czcwVnVXQS1jd3dxMGxO",
"status":"NOT_FOUND"}

Я так застрял, и мне нужно найти решение.

Большое спасибо!

0

Решение

Я также попробовал ваш запрос, используя Попробуйте этот API раздел и столкнулся с той же ошибкой. Как я заметил, photo.create используется для публикации загруженного фото так же, как 3. Загрузите метаданные фотографии. Когда я повторил это и удалил photoId параметр,

{
"uploadReference": {
"uploadUrl": "https://streetviewpublish.googleapis.com/media/user/1234567890/photo/1234567890"},
"connections": [],
"places": [],
"pose": {},
}

Я успешно получил 200 и photoID (тот же результат, который вы получите с 3. Загрузите метаданные фотографии).

введите описание изображения здесь

Что касается «Получить фотографию с возвращенным идентификатором photo», я не думаю, что нужно поставить addslashes в вашем запросе.

$ curl --request GET \
--url 'https://streetviewpublish.googleapis.com/v1/photo/PHOTO_ID?key=YOUR_API_KEY' \
--header 'authorization: Bearer YOUR_ACCESS_TOKEN'
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]