Я пытаюсь настроить некоторые действия API Google Maps Premier, и для этого мне нужно подписать мои URL-адреса для аутентификации. Если вы переходите к примерам подписи, есть код Python, C # и Java, чтобы показать вам, как сделать подпись через HMAC-SHA1. Также есть пример, чтобы я мог проверить свою реализацию 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==
Который полностью не соответствует.
Вещи, о которых я подумал:
-
и _
до +
и /
также не работает У вас есть 2 проблемы, по крайней мере,
Попробуй это,
$key = "vNIXE0xscrmjlyV-12Nj_BvUPaw="; $data = "/maps/api/geocode/json?address=New+York&sensor=false&client=clientID"; $my_sign = hash_hmac("sha1", $data, base64_decode(strtr($key, '-_', '+/')), true); $my_sign = strtr(base64_encode($my_sign), '+/', '-_');
Пример php доступен по адресу http://gmaps-samples.googlecode.com/svn/trunk/urlsigning/UrlSigner.php-source
Я предполагаю, что вы пытаетесь подписать url для OAuth?
Попробуйте эту библиотеку: http://code.google.com/p/oauth/