微信公众号js-sdk使用步骤总结

  • 内容
  • 相关

1. 域名绑定
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

可填写三个域名或路径(例:wx.qq.com或wx.qq.com/mp),需使用字母、数字及“-”的组合,不支持IP地址、端口号及短链域名。
填写的域名须通过ICP备案的验证。
将文件MP_verify_UhBvKrxosbLJmeos.txt(点击下载)上传至填写域名或路径指向的web服务器(或虚拟主机)的目录(若填写域名,将文件放置在域名根目录下,例如wx.qq.com/MP_verify_UhBvKrxosbLJmeos.txt;若填写路径,将文件放置在路径目录下,例如wx.qq.com/mp/MP_verify_UhBvKrxosbLJmeos.txt),并确保可以访问
一个自然月内最多可修改并保存三次
2.引入文件

<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

3.通过config接口注入权限验证配置

wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,签名生成算法见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});

4.通过ready接口处理成功验证

wx.ready(function(){
    // 在这里就可以使用微信sdk提供的录音、拍照等功能
    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

5.通过error接口处理失败验证

wx.error(function(res){
    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});

6.扩展signature签名的配置
想生成签名,必须要有jsapi_ticket,也就是想调用微信js接口,他就是门票,那么jsapi_ticket怎么来?可以用access_token获取,那access_token又是什么,是进行授权后接口调用的令牌,那access_token又怎么得来?

公众号可以使用AppID和AppSecret调用本接口来获取access_token

举个栗子:
比如你要坐飞机(使用微信jssdk),需要机票(jsapi_tiket),机票怎么来? 如果你想买机票必须要有身份证,身份证(access_token,)怎么来? 身份证是不是通过我们去公安局告诉公安局一些基本信息(AppID,AppSecret,类似于个人的基本信息)

所以第一步先获取appid和appsecret,在公众号号里可以直接看见然后通过appid和appsecret获取access_token

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=appid&secret=appsecret

然后通过上个接口得到的access_token在获取jsapi_ticket

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=access_token&type=jsapi

最终得到jsapi_ticket
最终利用jsapi_ticket、noncestr、timestamp、url生成了 signature

最后代码示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <button id="btn-record">录音</button>
    <button id="btn-stop-record">停止录音</button>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
    <script src="./node_modules/js-sha1/build/sha1.min.js"></script>
    <script>
        var signature = res.data. signature ;
        wx.config({
            debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: 'wx20397873b70ac874', // 必填,公众号的唯一标识
            timestamp: option.timestamp, // 必填,生成签名的时间戳
            nonceStr: option.noncestr, // 必填,生成签名的随机串
            signature: signature,// 必填,签名,签名生成算法见附录1
            jsApiList: ['checkJsApi',
                'onMenuShareTimeline',
                'onMenuShareAppMessage',
                'onMenuShareQQ',
                'onMenuShareWeibo',
                'onMenuShareQZone',
                'hideMenuItems',
                'showMenuItems',
                'hideAllNonBaseMenuItem',
                'showAllNonBaseMenuItem',
                'translateVoice',
                'startRecord',
                'stopRecord',
                'onVoiceRecordEnd',
                'playVoice',
                'onVoicePlayEnd',
                'pauseVoice',
                'stopVoice',
                'uploadVoice',
                'downloadVoice',
                'chooseImage',
                'previewImage',
                'uploadImage',
                'downloadImage',
                'getNetworkType',
                'openLocation',
                'getLocation',
                'hideOptionMenu',
                'showOptionMenu',
                'closeWindow',
                'scanQRCode',
                'chooseWXPay',
                'openProductSpecificView',
                'addCard',
                'chooseCard',
                'openCard'] 
        });

        wx.ready(function () {
            //录音接口的使用
            document.getElementById("btn-record").onclick = function () {
                wx.startRecord();
            }
            document.getElementById("btn-stop-record").onclick = function () {
                wx.stopRecord({
                    success: function (res) {
                        // res.localId  就是你刚才录音的标识
                        var localId = res.localId;
                        //停止录音之后,直接播放
                        wx.playVoice({
                            localId:localId // 需要播放的音频的本地ID
                        });
                    }
                });
            }
            //设置分享给朋友的内容
            wx.onMenuShareAppMessage({
                title: '测试', // 分享标题
                desc: '测试', // 分享描述
                link: 'http://xxxxx', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                imgUrl: 'http://0.jpg', // 分享图标
                type: 'link', // 分享类型,music、video或link,不填默认为link
                dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
                success: function () {
                    // 用户确认分享后执行的回调函数
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数
                }
            });

        });
        wx.error(function (res) {
            // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
        });
    </script>
</body>
</html>

本文标签:

版权声明:若无特殊注明,本文皆为《热心网友》原创,转载请保留文章出处。

本文链接:微信公众号js-sdk使用步骤总结 - https://qibiao.qingshenshiye.cn/?post=22

发表评论

电子邮件地址不会被公开。 必填项已用*标注

允许邮件通知
//