0

J'utilise PHP pour publier des images panoramiques. Je suis 3 étapes dans Google Document et a reçu avec succès PhotoID après métadonnées téléchargées, mais quand j'utilise ces photoID pour une autre demande, il renvoie "La référence de téléchargement ne peut pas être trouvée.Veuillez vous assurer que vous avez téléchargé un fichier à l'URL de référence de téléchargement. Si cette erreur persiste, demandez une nouvelle URL de téléchargement et réessayez ".Street View Publish API PHP - La référence de téléchargement ne peut pas être trouvée après le téléchargement des métadonnées

Voici mon code:

Get Ajouter 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]; 

Réponse:

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

Ajouter photo pour Upload URL:

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

Il ne retourne rien.

Téléchargez les métadonnées

$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); 

Réponse

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

Et quand je suis en train de mettre à jour la connexion ou exécuter API photo.create:

$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); 

Il réponse

{ 
    "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" 
    } 
} 

Obtenez la photo avec le retour 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); 

Réponse

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

Je suis coincé et besoin de trouver une solution.

Merci beaucoup!

Répondre

0

J'ai également essayé votre demande en utilisant la section Try this API et j'ai rencontré la même erreur. Comme je l'ai observé, photo.create est utilisé pour publier la photo téléchargée tout comme le 3. Upload the metadata of the photo. Quand je retenté cela et enlevé le paramètre photoId,

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

je avec succès obtenu 200 et le PHOTOID (même sortie que vous recevrez avec 3. Upload the metadata of the photo).

enter image description here

En ce qui concerne « Obtenir la photo avec le retour PHOTOID », je ne pense pas qu'il est nécessaire de mettre addslashes dans votre demande.

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