1、设置webview
<webview
src webview指向网页的链接,可打开关联的公众号的文章,其它网页需登录小程序管理后台配置业务域名,
bindmessage 网页向小程序postMessage时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息,e.detail={data},data是多次postMessage的参数组成的数组
bindload 网页加载成功时候触发此事件,e.detail={src}
binderror 网页加载失败的时候触发此事件,e.detail={src}
></webview>
(1)网页中跳转活和小程序通信,此时不需要进行wx.config验证
网页中引入jssdk
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
wx.miniProgram.navigateTo 参数与小程序接口一致
wx.miniProgram.navigateBack 参数与小程序接口一致
wx.miniProgram.switchTab 参数与小程序接口一致
wx.miniProgram.reLaunch 参数与小程序接口一致
wx.miniProgram.redirectTo 参数与小程序接口一致
wx.miniProgram.postMessage 向小程序发送消息,会在特定时机(小程序后退、组件销毁、分享)触发组件的message事件
wx.miniProgram.getEnv 获取当前环境
2、在网页中使用小程序的接口sdk方式
官网:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62
(1)获取acess_token
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
其中:
access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
appid和AppSecret 若小程序的错误,则使用关联公众号的
(2)获取jsapi_ticket
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
(3)根据sha1加密,获得signature
noncestr=Wm3WZYTPz0wzccnW //生成签名的随机串
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=1414587457
url=http://mp.weixin.qq.com?params=value //页面所在域名与使用的appid没有绑定
可在https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign,使用签名工具测试签名
(4)进行wx.config验证,在前端页面
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
验证成功
wx.ready(function(){
//config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行,对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
验证失败
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
验证接口是否支持
wx.checkJsApi({
jsApiList: ['chooseImage'], //需要检测的JS接口列表
success: function(res) {
//以键值对的形式返回,可用的api值true,不可用为false
//如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
}
});