博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信小程序第三方开发需要注意的点
阅读量:5924 次
发布时间:2019-06-19

本文共 2251 字,大约阅读时间需要 7 分钟。

1.关于小程序与公众号unionid数据互通

小程序和公众号必须为同一主体,而且必须绑定在同一个开放平台上,其中又分为两点:

  • 1.开放平台主动创建 此时需要手动将小程序和公众号绑定在开放平台上,不可使用接口绑定;

  • 2.开放平台由第三方接口创建 在公众号和小程序授权第三方开放平台管理权限后,可由接口进行绑定,若要绑定在同一个开放平台上,前提是公众号和小程序的主体相同,同时也支持接口解除绑定;

2.关于小程序ext.json

开发过程中可在小程序的根目录下添加ext.json文件来进行调试,比如在文件里添加以下配置:

{  "extEnable": true,  "extAppid": "wx90d87655678517ee",  "ext": {    "id": 100  }}复制代码

设置extEnable属性为true,后续小程序的逻辑将依照ext.json中extAppid来执行,并可以通过以下两种方式来获取ext中的参数:

//方式一if(wx.getExtConfig) {  wx.getExtConfig({    success: function (res) {      console.log(res.extConfig)    }  })}//方式二let extConfig = wx.getExtConfigSync? wx.getExtConfigSync(): {}console.log(extConfig)复制代码

另外第三方在帮助授权小程序提交代码的时候也可以指定ext字段,具体方式参考: 其中需要注意的一点是ext_json的格式要非常注意,因为ext_json结构很松散,所以很多时候需要我们自己拼装这个字段,那么它需要为类似以下格式:

"{\"extAppid\": \"wx90d87655678517ee\",\"ext\":{\"id\":100}}"复制代码

另外通过接口提交的ext_json会覆盖配置的ext.json中的对应信息,但在开发者工具无法获取接口提交的ext_json的信息,只能获取ext.json中信息,这点需要注意。

3.mpvue结合ext.json

目前最新版本的mpvue好像还不支持在main.js中添加ext.json的配置,所以若是需要使用它有以下两种方式:

  • 1.写一个插件,将src下的ext.json编译的dist目录下(mpvue编译后的小程序源码目录)
  • 2.直接在dist目录下创建一个ext.json文件 但记得要将extEnable属性设置为true。

4.用户小程序授权之后的解密算法(js版)

import crypto from 'crypto-browserify'function WXBizDataCrypt (appId, sessionKey) { //小程序appid,用户登录利用code从接口获得的sessionKey  this.appId = appId  this.sessionKey = sessionKey}WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {  // base64 decode  var sessionKey = new Buffer(this.sessionKey, 'base64')  encryptedData = new Buffer(encryptedData, 'base64')  iv = new Buffer(iv, 'base64')  try {     // 解密    var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv)    // 设置自动 padding 为 true,删除填充补位    decipher.setAutoPadding(true)    var decoded = decipher.update(encryptedData, 'binary', 'utf8')    decoded += decipher.final('utf8')    decoded = JSON.parse(decoded)  } catch (err) {    console.log(err)    throw new Error('Illegal Buffer')  }  if (decoded.watermark.appid !== this.appId) {    throw new Error('Illegal Buffer')  }  return decoded}let DataCrypt = {  getData (appId, sessionKey, encryptedData, iv) {    var pc = new WXBizDataCrypt(appId, sessionKey)    return pc.decryptData(encryptedData, iv)  }}export default DataCrypt使用方式:import DataCrypt from "path/to/DataCrypt"const data = DataCrypt.getData(...)复制代码

转载地址:http://blavx.baihongyu.com/

你可能感兴趣的文章
Docker Network 配置,自定义bridge网络
查看>>
tomcat
查看>>
时任上海来伊份互联网事业群总裁王戈钧 :传统企业(线上+线下)移动互联网改造...
查看>>
限制nginx仅能域名访问,不可用ip访问
查看>>
linux之ps命令详解
查看>>
阿里云云计算ACP考试知识点(标红为重点)
查看>>
memcached安装和php扩展memcache安装
查看>>
中国版LinkedIn呼之欲出
查看>>
据廖雪峰python3教程----python学习第十三天
查看>>
UWP: 实现 UWP 应用自启动
查看>>
easyui 排序实现
查看>>
网站常见漏洞-- XSS攻击
查看>>
nginx+php
查看>>
Maven发布工程到私服
查看>>
centos 下安装man手册
查看>>
Docker 私有仓库的搭建
查看>>
List 集合转换为String
查看>>
投票彰显电信合约机诺基亚Lumia 800C受热捧
查看>>
异常处理—错误抛出机制
查看>>
梦回编程- 由LD_LIBRARY_PATH引发JNI的理解
查看>>