您当前的位置: 首页 > 知识百科 > 微信分享签名失效怎么办?

微信分享签名失效怎么办?

时间:2023-07-01 14:05 阅读数:98 人阅读 分类:知识百科

  微信分享签名失效怎么办?微信分享签名失效是经常会出现的一种问题,遇到这种问题,有方法去解决,以下是小编整理的微信分享签名失效怎么解决的内容,希望对您解决问题有帮助。

  首先获取jsapi_ticket

  生成微信签名之前必须先了解一下jsapi_ticket,jsapi_ticket是微信公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,

  通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,

  开发者必须在自己的服务全局缓存jsapi_ticket 。

  参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):获取access token的方法

  用第一步拿到的access_token 采用 GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):api.weixin.qq/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

  成功返回如下JSON:

  #FormatImgID_0#

  {

  "errcode":0,

  "errmsg":"ok",

  "ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",

  "expires_in":7200

  }

  #FormatImgID_1#

  获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。

  其次获取签名,签名的算法如下:

  签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。

  对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。

  这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

  即signature=sha1(string1)。 示例:

  noncestr=Wm3WZYTPz0wzccnW

  jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg

  timestamp=1414587457

  url=mp.weixin.qq?params=value

  步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:

  jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=mp.weixin.qq?params=value

  步骤2. 对string1进行sha1签名,得到signature:

  0f9de62fce790f9a083d5c99e95740ceb90c27ed

  注意事项

  签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。

  签名用的url必须是调用JS接口页面的完整URL。

  出于安全考虑,开发者必须在服务器端实现签名的逻辑。

  以上就是小编整理的微信分享签名失效怎么解决的内容,希望以上的内容能解决您的问题,如果您还想了解更多精彩的微信素材,敬请多多的关注微素达网哦。更多精彩内容等着您哦。

相关推荐:

  微信公众号投票按钮是如何使用的,

  微信分享成功后回调函数问题有哪些?

  关注公众号就弹出图文信息是怎么设置的?