美文网首页
小程序webview(H5)调用JSSDK功能指北

小程序webview(H5)调用JSSDK功能指北

作者: 青春万岁万万岁 | 来源:发表于2019-12-03 15:08 被阅读0次

    最核心的一个概念:

    小程序的webview(H5页面)中调用jssdk中的功能(比如获取位置信息),需要有一个和小程序申请主体一致的公众号账号,在公众号里去配置相关的jssdk信息.

    1 小程序账号

    因为webview不支持个人类型,所以需要申请一个企业法人及个体工商户类型的小程序账号

    2 公众号账号

    要求小程序和公众号的账号对应的主体信息必须一致,有两种途径达到此目的:

    先申请公众号账号,然后通过公众号的快速生成小程序功能,生成步骤1的小程序账号,这样这两个自然满足同主体资格

    登录微信公众号平台,点击小程序管理-添加-快速注册并认证小程序:

    用和申请小程序账号完全一致的主体信息去申请公众号(主体类型,主体名称,主体证件号),也能保证两个账号的主体资格一致(目前没有小程序快速生成公众号账号的功能..)

    3 域名绑定

    这里需要两个账号都配置一下:

    业务域名

    首先webview指向一个外部网页链接(我们的H5页面)

    <web-view src="https://abc.xxx.com.cn/cc/index.html"></web-view>

    这个地址要满足:

    已经通过ICP备案域名

    https协议

    不支持自定义端口

    不支持ip地址

    不支持短链域名

    那么首先要在小程序中的'开发'-'开发设置'的'业务域名'中,将https://abc.xxx.com.cn配置进去:

    JS接口安全域名

    在上述h5页面中,因为要调用jssdk的js文件:

    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

    因此要在公众号设置”的“功能设置”里填写“JS接口安全域名”

    注意:以上两个配置地址时,都需要将配置时提供的一个文本文件按照要求上传到H5页面所在服务器并确保能被访问,用于腾讯验证服务器,否则是无法提交相关信息的

    4 应用

    jssdk提供了很多功能,但是webview中,只支持部分接口,自行查看web-view,这里以获取位置信息为例:

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

    所有需要使用JSSDK的页面必须先注入配置信息,否则将无法调用:

    wx.config({

    appId: '', // 必填,公众号的appid,注意不是小程序的appid

    timestamp: , // 必填,生成签名的时间戳

    nonceStr: '', // 必填,生成签名的随机串

    signature: '',// 必填,签名

    debug: true, // 选填,开启调试模式,调用的所有api的返回值会在客户端alert出来。

    jsApiList: ['getLocation'] // 必填,需要使用的JS接口列表,这里为获取位置信息

    });

    以上参数除了最后两个,建议在后台服务中存储和计算,具体需参考jssdk,主要思路:

    利用公众号的appidsecret去获取access_token

    利用access_token去获取ticket

    利用ticket和自行生成的(timestamp,nonceStr,当前页面的地址)计算出最终的签名

    执行getLocation

    以上步骤执行成功后,方可执行wx.getLocation:

    var success=true

    // 之所以这里有个success变量,是因为发现wx.error触发也会调用wx.ready(如果有个wx.success就好了)

    //但其实这并不完美,因为还发现有时候wx.ready先执行,然后触发了wx.error ........

    wx.ready(function(){

    if(success){

    wx.getLocation({

    type: 'wgs84',

    success(res) {

    // res为坐标位置信息

    },

    fail(e) {

    // 获取失败

    }

    })

    }

    // config信息验证后会执行ready方法

    });

    wx.error(function(res){

    success=false

    // config信息验证失败会执行error函数

    });

    吐槽:

    wx.config有时候成功,有时候说签名失败

    wx.ready代表配置验证完毕了,不代表验证成功了,那他的意义在于什么

    reference:

    jssdk:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

    web-view:https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

    相关文章

      网友评论

          本文标题:小程序webview(H5)调用JSSDK功能指北

          本文链接:https://www.haomeiwen.com/subject/xjicgctx.html