JSSDK使⽤权限签名算法
jsapi_ticket
⽣成签名之前必须先了解⼀下jsapi_ticket,jsapi_ticket是⽤于调⽤JS接⼝的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由
于获取jsapi_ticket的api调⽤次数⾮常有限,频繁刷新jsapi_ticket会导致api调⽤受限,影响⾃⾝业务,开发者必须在⾃⼰的服务全局缓存jsapi_ticket。
1. 参考以下⽂档获取access_token(有效期7200秒,开发者必须在⾃⼰的服务全局缓存access_token):
2. ⽤第⼀步拿到的access_token 采⽤http GET⽅式请求获得jsapi_ticket(有效期7200秒,开发者必须在⾃⼰的服务全局缓存jsapi_ticket):
成功返回如下JSON:
{
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
}
获得jsapi_ticket之后,就可以⽣成JSSDK权限验证的签名了。
签名算法
签名⽣成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前⽹页的URL,不包含#及其后⾯部分)。对所有待签名参
js获取json的key和value数按照字段名的ASCII 码从⼩到⼤排序(字典序)后,使⽤URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这⾥需要注意的是所有参数名均为⼩写
字符。对string1作sha1加密,字段名和字段值都采⽤原始值,不进⾏URL 转义。
即signature=sha1(string1)。⽰例:
noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=1414587457
url=
步骤1. 对所有待签名参数按照字段名的ASCII 码从⼩到⼤排序(字典序)后,使⽤URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW×tamp=1414587457&url=mp.weixin.qq 步骤2. 对string1进⾏sha1签名,得到signature:
f4d90daf4b3bca3078ab155816175ba34c443a7b
注意事项
1. 签名⽤的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
2. 签名⽤的url必须是调⽤JS接⼝页⾯的完整URL。
3. 出于安全考虑,开发者必须在服务器端实现签名的逻辑。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。