微信分享签名失效怎么办?
微信分享签名失效怎么办?微信分享签名失效是经常会出现的一种问题,遇到这种问题,有方法去解决,以下是小编整理的微信分享签名失效怎么解决的内容,希望对您解决问题有帮助。
首先获取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。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
以上就是小编整理的微信分享签名失效怎么解决的内容,希望以上的内容能解决您的问题,如果您还想了解更多精彩的微信素材,敬请多多的关注微素达网哦。更多精彩内容等着您哦。
相关推荐:
微信公众号投票按钮是如何使用的,
微信分享成功后回调函数问题有哪些?
关注公众号就弹出图文信息是怎么设置的?
上一篇:微信分享签名工具是什么?
下一篇:微信分享接口签名错误是什么意思?