Google Maps Premier API アクションをセットアップしようとしています。そのためには、URL に署名して認証する必要があります。署名の例に進むと、HMAC-SHA1 を介して署名を行う方法を示す Python、C#、および Java コードがいくつかあります。PHP の実装をテストできるように、例もあります。しかし、私はそれを機能させることができないようです。
これが私のコードです:
$key = "vNIXE0xscrmjlyV-12Nj_BvUPaw=";
$data = "/maps/api/geocode/json?address=New+York&sensor=false&client=clientID";
$my_sign = hash_hmac("sha1", $data, base64_decode($key));
$my_sign = base64_encode($my_sign);
$valid_sign = "KrU1TzVQM7Ur0i8i7K3huiw3MsA=";
これを実行すると、次の署名が得られます。
ZDRlNGMwZjIyMTA1MWM1Zjk0Nzc4M2NkYjlmNDQzNDBkYzk4NDI4Zg==
まったく一致しないもの。
私が考えたこと:
- キーは Modified URL エンコード形式であるため、 and を and に変更
-し_て+も/機能しません - Python のサンプル コードは実際に機能するため、これは有効な例です。
- PHP の代わりに Python でコードベースを完全に書き直しました (私はそれを継承しました)。