googleの新しいマップAPIを使用する場合、googleから提供されたキー値を用いて生成したシグネチャーをリクエストURLの最後に付与する必要がありその生成サンプルはgoogleサイトに在るのですが・・・・
でも何故かそのサンプルにPHPが無くて(^_^.)
必要になったので作ってみました。
一応、生成サンプル内の生成結果の様には出力されますのでOKかな(^_^.)
ご使用はあくまでも自己責任で。
<?php // ======================================= // 検証用URLとKEY // --------------------------------------- // googleサイト: // http://code.google.com/intl/ja/apis/maps/documentation/webservices/ // から取得 // ======================================= $URL = "http://maps.google.com/maps/api/geocode/json?address=New+York&amp;sensor=false&amp;client=clientID"; $PrivateKey = "vNIXE0xscrmjlyV-12Nj_BvUPaw="; // ======================================= // 実際にクラス作成してSignature文字列を取得 // ======================================= $Utility= new Utility(); $newurl = $Utility->CreateSignature($URL, $PrivateKey ); // 結果を表示してみる。 print( $newurl."\n" ); // ======================================= // とりあえずクラス // ======================================= class Utility { // ======================================= // URLとキー値からシグネチャー文字列を付与したURLを生成する。 // --------------------------------------- // $URL :googleリクエストURL // $key :貰ったキー(googleさんから貰ってね) // --------------------------------------- // return:URL + シグネチャー 文字列 // ======================================= static function CreateSignature( $url, $key ) { try { // ======================================= // urlからパスとクエリ文字列を求める // ======================================= $parseUrl = parse_url( $url ); $pathQuery = $parseUrl["path"]."?".$parseUrl["query"]; // ======================================= // Base64デコード前にキー文字列内の特定文字置き換え // --------------------------------------- // "-" → "+" // "_" → "/" // ======================================= $keyStringTmp = str_replace( "-" , "+" , $key ); $keyStringTmp = str_replace( "_" , "/" , $keyStringTmp ); // ======================================= // Base64デコード実行 // ======================================= $decodedKey = base64_decode( $keyStringTmp ); // ======================================= // URLをMAC-SHA1アルゴリズムで暗号化 // ======================================= $signature = hash_hmac( "sha1", $pathQuery, $decodedKey, true ); // ======================================= // Base64でエンコード // ======================================= $signature = base64_encode( $signature ); // ======================================= // Base64エンコード後にデコード前に置き換えた文字を戻す。 // --------------------------------------- // "+" → "-" // "/" → "_" // ======================================= $signature = str_replace( "+" , "-" , $signature ); $signature = str_replace( "/" , "_" , $signature ); // ======================================= // URL生成 // ======================================= $requestUrl = $url."&signature=".$signature; return $requestUrl; } catch( Exception $e ) { throw $e; } } } ?>