일부 Google지도 고급형 API 작업을 설정하려고합니다. 인증을 위해 URL에 서명해야합니다. Signature 예제로 가면 HMAC-SHA1을 통해 서명을 수행하는 방법을 보여주는 Python, C# 및 Java 코드가 있습니다. PHP 구현을 테스트 할 수있는 예제도 있습니다. 그러나, 나는 단지 그것이 작동하도록 할 수 없습니다. 완전히 일치하지 않는PHP로 HMAC-SHA1을 통해 디지털로 서명하려고 시도했습니다.
ZDRlNGMwZjIyMTA1MWM1Zjk0Nzc4M2NkYjlmNDQzNDBkYzk4NDI4Zg==
:이 프로그램을 실행할 때, 나는의 서명을받을
$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=";
:
여기 내 코드입니다.
것들 나는 생각했다 :
- 의 핵심은 너무도
- 파이썬 예제 코드는 실제로 작동합니까 작동하지 않습니다
+
및/
에-
및_
을 변경, 수정 된 URL 인코딩 형식으로되어 있습니다, 그래서 이것은 유효한 예제입니다. - 우리의 코드베이스를 PHP 대신 파이썬으로 완전히 다시 작성했습니다 (상속했습니다).
에서 확인할 수있다. 나는이 두 문자를 수동으로 바꾸려고 시도했지만 여전히 정확한 결과를 볼 수 없다는 것을 맹세한다. 아마 그것은 맞지 않았을 것입니다. 어쨌든 귀하의 도움에 감사드립니다! :) – Conradaroma
@ZZCoder 당신의 예제는 오늘날에도 여전히 유용합니다. Amazon S3 버킷 요청에 서명하는 것은 매우 유사합니다. '$ signature = rawurlencode (base64_encode (hash_hmac ("sha1", $ stringToSign, $ secret_access_key, true))); –
rawurlencode 함수를 사용하지 않을 때 Geek Stocks의 S3 업로드 제안이 작동합니다. 이 업로드 솔루션에는 라이브러리를 사용하지 않고 사용할 수있는 훌륭한 S3/PHP 정보가 있습니다. http://www.plupload.com/docs/v2/Upload-to-Amazon-S3 – Exit