Sto tentando di impostare alcune azioni API di Google Maps Premier e, per farlo, devo firmare i miei URL per l'autenticazione. Se si passa agli esempi di firma, vi sono alcuni codici Python, C# e Java per mostrare come eseguire la firma tramite HMAC-SHA1. C'è anche un esempio in modo che io possa testare la mia implementazione PHP. Tuttavia, proprio non riesco a farlo funzionare.Cercando di firmare digitalmente tramite HMAC-SHA1 con PHP
Ecco il mio codice:
$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=";
Quando, corro questo, ho una firma:
ZDRlNGMwZjIyMTA1MWM1Zjk0Nzc4M2NkYjlmNDQzNDBkYzk4NDI4Zg==
Quali totalmente non corrisponde.
Le cose che ho pensato:
- La chiave è nel formato URL codificato modificata, in modo da cambiare
-
e_
-+
e/
anche non funziona - Il Python codice di esempio fa davvero il lavoro, quindi questo è un esempio valido.
- Riscrivere completamente la nostra base di codice in python anziché in PHP (l'ho ereditata).
Il codice ha funzionato. Giuro che ho provato a commutare questi due personaggi manualmente e ancora non riuscivo a vedere il risultato corretto. Forse non era corretto però. In ogni caso, grazie per il vostro aiuto! :) – Conradaroma
@ZZCoder Il tuo esempio è stato utile ancora oggi - grazie per averlo scritto; la firma delle richieste del bucket Amazon S3 è molto simile. '$ signature = rawurlencode (base64_encode (hash_hmac (" sha1 ", $ stringToSign, $ secret_access_key, true)))' –
Il suggerimento di Geek Stocks per gli upload S3 funziona quando non si utilizza la funzione rawurlencode. Questa soluzione di upload ha buone informazioni S3/PHP che possono essere utilizzate senza mai usare la loro libreria: http://www.plupload.com/docs/v2/Upload-to-Amazon-S3 – Exit