• 微信公众号和小程序开发之调用JSSDK


    开发者文档地址

    首先来看看在微信公众号中的步骤:

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


    第二步:引入JS文件
    在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

    第三步:通过config接口注入权限验证配置(其中配置参数调用后台接口 由后台人员生成)
    wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    });
    1
    2
    3
    4
    5
    6
    7
    8
    签名算法生成规则:查看文档

    第四步:通过ready接口处理成功验证
    wx.ready(function(){
    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    });
    1
    2
    3
    第五步:通过ready接口处理成功验证
    wx.error(function(res){
    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    });
    1
    2
    3
    第六步:接口调用
    拦截器具体实现: 参考地址
    js 接口调用 :参考地址
    下面介绍小程序的web-view里使用微信的JS-SDK:

    官方文档

    如果只是使用wx.miniProgram.navigateTo这种导航的接口,jssdk可以不用做配置,引用js后直接使用就行,如果chooseImage这种,就需要获取配置了,步骤如下:

    先在后端通过AppID和AppSecret取到access_token,并缓存access_token
    再通过access_token获取到jsapi_ticket,jsapi_ticket的值也要缓存
    使用jsapi_ticket、当前URL、随机字符串、1970年1月1日00:00:00至今的秒数生成签名及及配置,返回给前端,签名记得使用https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign校验是否正确
    前端拿到config后放到wx.config里执行
    在wx.ready中注册事件

    步骤比较多但是并不复杂,主要是这其中几个坑需要避开别踩到:

    AppID和AppSecret不能用小程序的,要用公众号的,否则会报invalid url domain的错误,官方文档上并没有说明这一点,所以这个坑非常深非常隐蔽,另外这个公众号要不要与小程序关联还不清楚,我用的是关联的。

    签名用到的当前URl不要解码,拿到的是什么就用什么,否则即使签名校验通过也会报签名错误

    如果你用了chooseImage这个api,需要获取到选择的图片的话,官方文档上说是在success的tempFilePaths参数里,实际上并不是,是在localIds里面

    以上就是JSSDK使用的介绍。
    ————————————————
    版权声明:本文为CSDN博主「weixin_40226026」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_40226026/java/article/details/81698512

  • 相关阅读:
    日期控件选择条件控制只能选择当前日期之前或当前日期之后
    记录一次ajax 429请求laravel api的错误
    如何配置Linux系统的IP地址?
    laravel 定时任务通过队列发送邮件
    ioutil.ReadFile 读取文件内容时为什么读取不到文件呢?open var2.go: no such file or directory
    swoole异步io操作
    PHP获取本周所有日期或者最近七天所有日期
    面试又给我问到MySQL索引,最全的一次整理
    Google资深工程师深度讲解Go语言基础语法(二)
    ps命令详解
  • 原文地址:https://www.cnblogs.com/zzsdream/p/13376264.html
Copyright © 2020-2023  润新知