微信 JS-SDK 配置wx.config
微信 JS-SDK 是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包,可以通过 JS-SDK 使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,要使用 JS-SDK 的第一步就是配置 wx.config 接口
微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62
可先下载引用jweixin-1.6.0.js,如不可以使用可以试试这个 jweixin-1.6.0.js
wx.config 接口注入权限验证配置
wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来 appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名 jsApiList: [] // 必填,需要使用的JS接口列表 });
获取第一个参数签名的时间戳(其实就是获取当前时间)
获取第二个签名随机串(也没啥特别的就是 UUID)
获取第三个参数签名!!这个比较重要,签名 = 随机串 + ticket + 时间戳 + URL(当前页面),但是随机串和时间戳我们在上边已经获取到了,下边我们只获取 ticket和当前页面的 URL 就好了,最后把他们拼到一起
获取signature主要分四部
AppID和 AppSecret可在微信公众平台 - 开发 - 基本配置”页中获得
1、使用APPID和APPSecret获取access_token;
2、使用access_token获取jsapi_ticket ;
3、用时间戳、随机数、jsapi_ticket和要访问的url按照签名算法拼接字符串;
4、对第三步的字符串进行SHA1加密,得到签名。
获取ticket前就得先获取access_token,获取可参考官方的:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
接口调用请求说明
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
公众号和小程序均可以使用 AppID 和AppSecret调用本接口来获取access_token。AppID和 AppSecret 可在“微信公众平台 - 开发 - 基本配置”页中获得
参数 | 是否必须 | 说明 |
---|---|---|
grant_type | 是 | 获取access_token填写client_credential |
appid | 是 | 第三方用户唯一凭证 |
secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
正常情况下,微信会返回下述 JSON 数据包给公众号:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
拿到的access_token后 采用http GET方式请求获得jsapi_ticket
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
成功返回如下JSON
{
"errcode":0,
errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
}
获得jsapi_ticket之后,就可以生成 JS-SDK 权限验证的签名了。
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义
签名校验:https://mp.weixin.qq.com/debug/cgi-bin/sandBox?t=jsapisign
例子可参考:https://blog.csdn.net/qq_36537546/article/details/118701629
https://blog.csdn.net/cplvfx/article/details/121798753
https://www.cnblogs.com/laid/p/15177188.html