Я пытаюсь настроить некоторые действия API Google Maps Premier API, и для этого мне нужно подписать мои URL-адреса для аутентификации. Если вы переходите к примерам подписи, есть код Python, C# и Java, чтобы показать вам, как сделать подпись через HMAC-SHA1. Также есть пример, чтобы я мог проверить свою реализацию PHP. Однако я просто не могу заставить его работать.Пытается подписать цифровую подпись через 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==
Что совершенно не соответствует.
Что я думал о:
- Ключ в Modified URL формата кодировки, поэтому изменение
-
и_
к+
и/
также не работает - Питон пример кода действительно работает, поэтому это допустимый пример.
- Полностью переписываем нашу кодовую базу в python вместо PHP (я унаследовал ее).
Ваш код работал. Клянусь, я попытался переключить этих двух персонажей вручную и до сих пор не мог видеть правильный результат. Возможно, это было неверно. В любом случае, спасибо за помощь! :) – Conradaroma
@ZZCoder Ваш пример был полезен еще сегодня - спасибо, что написал его; Подписание запросов Amazon S3 ведро очень похоже. '$ signature = rawurlencode (base64_encode (hash_hmac (« sha1 », $ stringToSign, $ secret_access_key, true)));' –
Предложение Geek Stocks для загрузки S3 работает, когда не используется функция rawurlencode. Это решение для загрузки имеет хорошую информацию S3/PHP, которую можно использовать без использования их библиотеки: http://www.plupload.com/docs/v2/Upload-to-Amazon-S3 – Exit