我正在尝试设置一些Google Maps Premier API操作,为此,我需要签署我的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==
哪个完全不匹配.
我想到的事情
>关键是修改URL编码格式,所以更改 – 和_到和/也不工作
> Python示例代码确实有效,所以这是一个有效的例子.
>完全重写我们的代码基础在python而不是PHP(我继承它).
你至少有两个问题,
Google使用特殊的URL安全Base64.正常的base64_decode不起作用
>您需要以二进制形式生成SHA1.
尝试这个,
$key = "vNIXE0xscrmjlyV-12Nj_BvUPaw="; $data = "/maps/api/geocode/json?address=New+York&sensor=false&client=clientID"; $my_sign = hash_hmac("sha1",base64_decode(strtr($key,'-_','+/')),true); $my_sign = strtr(base64_encode($my_sign),'+/','-_');
原文地址:https://www.jb51.cc/php/130863.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。