0

我使用PHP發佈全景圖像。我在Google Document中執行了3個步驟,並且在上傳元數據後成功接收了PhotoID,但是當我使用這些PhotoID作爲其他請求時,它將返回「無法找到上傳參考。請確保您已上傳文件到上傳參考URL。如果此錯誤仍然存​​在,請申請一個新的上傳網址並重試「。Street View Publish API PHP - 上傳元數據後無法找到上傳參考

這裏是我的代碼:

獲取上傳的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" 
} 

上傳照片上傳網址:

$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

我也嘗試過使用Try this API部分的請求,並且遇到了同樣的錯誤。正如我所觀察到的,photo.create用於發佈上傳的照片,就像3. Upload the metadata of the photo一樣。當我試這一點,並刪除photoId參數,

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

我順利地拿到了200和PHOTOID(相同的輸出,你會收到3. Upload the metadata of the photo)。

enter image description here

關於「獲取與返回PHOTOID照片」,我不認爲有必要把addslashes在您的要求。

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