微信 签名 invalid signature 问题

发布于 2021-12-01 22:52:25 字数 500 浏览 970 评论 9

微信接口开发问题重现:

已经开发好签名方法

测试1: 成功分享

进行sha1签名的原始字符串为,注意url不带参数

jsapi_ticket=xxxx&noncestr=yyyy&timestamp=1414587457&url=http://kkkk.com/
测试2:失败, jssdk报invalid signature错误

与上述区别在于进行sha1签名的原始字符串的url是带参数的:

jsapi_ticket=xxxx&noncestr=yyyy&timestamp=1414587457&url=http://kkkk.com/?nickName=nnn&headImg=http://xxx.com

不知道为什么会这样?

对于参数url后面的参数是否也要安装ascii排序?


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

如日中天 2021-12-03 18:10:15

请问你下,这个url是我认证时候的url还是访问其他网页的url呢,后面没参数呢?

醉生梦死 2021-12-03 18:10:10

无须urlencode的

孤檠 2021-12-03 18:10:05

回复
我不是说url参数应当urlencode,而是url参数中的url参数。。。有点绕

冷清清 2021-12-03 18:09:07

回复
也不需要的

凡尘雨 2021-12-03 18:06:09

回复
那你详细检查一下

等你爱我 2021-12-03 17:15:31

是否是因为headImg参数值应当 urlencode?

高跟鞋的旋律 2021-12-03 13:40:46

因为是动态的啊,除了
#和#之后的都要,我不是给了一个$string=给你了吗,按照这个顺序就可以了,微信给的DEMO是这么连接的

眼眸里的那抹悲凉 2021-12-03 05:23:18

@wsy5344 ,没看过文档几遍我怎么会发帖, 微信文档没有我要的答案。 你都没仔细看清我问什么, 你的$url这个参数里面带参数吗?如有那顺序如何

本宫微胖 2021-12-02 14:18:47

建议你仔细看下微信的文档吧

$data['access_token']=$this->get_access_token();
$data['jsapi_ticket']=$this->get_jsapi_ticket($data['access_token']);
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$data['nonceStr']=$this->createNonceStr();
$string = "jsapi_ticket=".$data['jsapi_ticket']."&noncestr=".$data['nonceStr']."×tamp=".time()."&url=".$url;
$data['signature'] = sha1($string);

private function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
      $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
  }

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文