y1379269335
y1379269335
2016-12-13 00:43
采纳率: 50%
浏览 2.3k
已采纳

微信企业号页面打开企业通讯录选人报错:fail_invalid signature,请问如何解决?

企业号页面中,想打开企业通讯录选人。
access_token获取成功;
jsapi_ticket获取成功;
group_ticket也获取成功;
wx.config调用成功(由于debug模式,弹出ok,说明jsapi_ticket的签名算法是正确的);

但是的就是调用WeixinJSBridge.invoke("openEnterpriseContact", {......}, function(){......})的时候,总是报fail_invalid signature的错误。
签名算法与wx.config中用的签名算法一样,签名用的字符串也是按照官网开发文档拼接的。

以下是我的代码片段:
图片说明

而且,我已经按照官方文档附录6的方式检查了:
1、企业管理组权限验证签名算法无法验证,因为这个工具只能验证jsapi的签名算法。企业管理组权限验证签名算法与jsapi_ticket签名算法相同,并通过了http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 此页面工具的验证。
2、wx.config中的nonceStr是大写S,并且timestamp和noncestr与签名中的一样。
3、url是完整的,以http://开头,与location.href.split('#')[0]相同,我的这个url没有get参数。
4、检查过,一样。
5、access_token和group_ticket都是缓存的。
6、检查了,是一样的。

页面获取group_ticket签名的controller:
图片说明

签名的方法:
图片说明

请问是哪里出了问题?

恳请有能之士帮下忙,帮我解决下这个问题,非常感谢。

2016年12月22日修改

问题已解决,原因是ios微信上调用此js接口,传入的timestamp必须是字符串类型,我之前传的是数字类型。安卓上无此问题。
见知乎:
https://www.zhihu.com/question/53490788/answer/136897593?group_id=794851608767893504

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • y1379269335
    y1379269335 2016-12-22 02:15
    已采纳

    问题已解决,原因是ios微信上调用此js接口,传入的timestamp必须是字符串类型,我之前传的是数字类型。安卓上无此问题。
    见知乎:
    https://www.zhihu.com/question/53490788/answer/136897593?group_id=794851608767893504

    点赞 评论
  • kun_tostudy
    kun_hello 2016-12-13 01:16

    是签名算法有问题吗?

    http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign这个网站可以检测签名是否正确

    还有你访问的域名要再开发者设置里面加上去

    点赞 评论
  • yesingle
    yesingle 2016-12-15 05:36

    第一:确定工程项目是否UTF-8格式
    第二:加密是否进行UTF-8转码。

    点赞 评论

相关推荐