私はマニュアルの「写真のアップロード」の下にリストされている手順を複製しようとすると、PHPを通じてAPIを公開ストリートビューでいくつかの問題を抱えているストリートは、PHPでAPIを公開 - アップロードの参照が見つからない
https://developers.google.com/streetview/publish/first-app
私は最初の部分が働いており、アップロードURLを変数$ upload_urlに取り出すことができます。
これは、ステップ2
$another = array(
'upload-file' => curl_file_create($imagepath)
);
$header = array (
"Authorization: Bearer $accesstoken",
"Content-Type: multipart/form-data"
);
$options = array(
CURLOPT_URL => $upload_url,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $another,
CURLOPT_HTTPHEADER => $header,
CURLOPT_SSL_VERIFYPEER => false
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
echo(curl_error($ch));
curl_close($ch);
var_dump($response);
curl_error
ための私のコードでは、何かを返す、と$response
trueを返し、そう私は、ファイルが正常にアップロードされたと仮定していますされていません。ステップ3のために
I var_dump($result)
は私がアップロードされたファイルが何かアドバイスは歓迎されるであろうuploadUrl
Array ([uploadReference] => Array ([uploadUrl] => https://streetviewpublish.googleapis.com/media/user/XXXX/photo/YYYY) [pose] => Array ([latLngPair] => Array ([latitude] => 53.59398125 [longitude] => -1.95349941)) [captureTime] => Array ([seconds] => 1502560132)) string(255)
"{
"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"
}
} "
ではないことを示唆している404を取得する場合、私は、
$data['uploadReference']['uploadUrl']=$upload_url;
$data['pose']['latLngPair']['latitude']=$latitude;
$data['pose']['latLngPair']['longitude']=$longitude;
$data['captureTime']['seconds']=$timestamp;
$data_string = json_encode($data);
print_r($data);
$ch = curl_init('https://streetviewpublish.googleapis.com/v1/photo?key='.$apikey);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'authorization: Bearer '.$accesstoken,
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
curl_close ($ch);
を使用しています私の本能は、問題は3番目ではなく2番目のステップであるということですが、私はすべての提案に開放しています。前もって感謝します。
ありがとうございます。イメージファイルは互換性があり、Streetview Androidアプリからアップロードすることで受け入れられました(結局、それは私がそれを改善しようとしている本当にひどいワークフローです)。 ステップ2のアップロードが失敗していることは間違いありません。curl_getinfo()を見れば、500 Internal Server Errorが返されますが、それ以上は役に立ちません。 –
はい。 Streetviewアプリで直接撮影したパノラマ画像をStreetviewでアップロードしようとしました。カールを使って画像をアップロードしようとしたとき、私は上記のエラーを受け取りました。これは、[Photo Sphere XMPメタデータ](https://developers.google.com/streetview/spherical-metadata)に記載されているように、公開する画像に必要なメタデータがないためです。 ExifToolを使用して抽出されたサンプルメタデータは次のとおりです。http://imgur.com/L6MC8yd – abielita
私はステップ2のカール操作を行うためにバッチファイルを出力するスクリプトを作りました。働くそれに基づいて、私は、この問題はjpgファイルとそのメタデータにあると敬意を表することに同意します。 API経由で手動でアップロードできます。この問題は、PHPを使用したカール操作のパラメータにはっきりとはっきりとしています。 –