分享

thinkPHP5.0开发微信小程序登录接口signature验证失败

 天天向上wish 2018-02-02

我用TP5开发微信小程序登录接口的时候,在校验签名signature那遇到了个坑,一直校验失败,找了很久才发现

原因是:tp的input方法会自动转移html字符,比如’”’转成了 &quote; ,所以导致了失败:

本来的rawData

{"nickName":"小小黑","gender":1,"language":"en","city":"Zhanjiang","province":"Guangdong","country":"CN","avatarUrl":"http://wx./mmopen/vi_32/iaFp2syscJNYgalastnQ3bnYt2l4cURSX7p7CeZ7SkNLa32yqBHsXITPibqrJl7z6mYYIibmCLlwtoOwCp0nMibIgA/0"}WYrl3b8xiPuJlOnY/zCXdw==
  • 1

TP中input方法过滤过的rawData

{"nickName":"小小黑","gender":1,"language":"en","city":"Zhanjiang","province":"Guangdong","country":"CN","avatarUrl":"http://wx./mmopen/vi_32/iaFp2syscJNYgalastnQ3bnYt2l4cURSX7p7CeZ7SkNLa32yqBHsXITPibqrJl7z6mYYIibmCLlwtoOwCp0nMibIgA/0"}WYrl3b8xiPuJlOnY/zCXdw==
  • 1

所以校验方法需要这样写:

$signature2 = sha1(htmlspecialchars_decode($rawData) . $session_key);

if ($signature2 !== $signature) return ret_message("signNotMatch");
  • 1
  • 2
  • 3

后续会给一个完整的登录流程代码(前端+ThinkPHP5.0)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多