微信公众平台

微信内部生态开发,包括服务号、订阅号、小程序、企业微信

Posted by page on June 3, 2021

微信公众平台

基本概念

登录: 登录即允许主动调用 wx.login 获取 openId 和 session_key

授权: 即被动 open-type 获取加密的用户数据给后台解密后返回

ID标识

ID用于标识用户与开发者,借此来实现微信服务

OpenID: 用户在一个小程序中的唯一标识(wx.login + code2Session)

UnionID: 用户在一个开放平台所有应用下的唯一 id

获取方式

  • 小程序wx.getUserInfo -> 后台解密出UnionID(需授权)

  • 用户关注了同主体公众号下,wx.login + code2Session 获取到 UnionID(无需再次授权)

  • 用户关注/授权登录了同主体公众号/应用下,小程序云函数cloud.getWXContext获取

  • 小程序支付完成后getPaidUnionId,仅支付后5分钟(无需授权)

AppID: 小程序身份证,借此获取微信接口使用权限

AppSecret: 小程序唯一凭证密钥

公众号开发

微信公众开发文档https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

SDK接入

微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。

可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫等微信特有的能力;

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

安装

npm install weixin-js-sdk

jsapi_ticket

jsapi_ticket 是获取微信接口使用权限的临时票据,后端通过 access_token 通过GET请求特定微信url换取

签名signature

将以下4个字段按顺序使用”&”拼接

  • jsapi_ticket=xxx… (获取的jsapi_ticket)

  • noncestr=Wm3WZYTPz0wzccnW (随机字符串)

  • timestamp=1414587457 (当前时间戳)

  • url=http://mp.weixin.qq.com?params=value (当前网页的url,不允许hash)

  • 对拼接字符串进行sha1签名,返回的字符串记为signature字段

注:为安全性,服务端生成以上字段,前端拼接后作为调用 wx.config 参数

验证配置 wx.config

wx.config({
    debug: false, // 是否开启调试模式,开启则在每次微信接口调用完成alert返回结果
    appId: '微信公众号appId',
    timestamp: data.timestamp,
    nonceStr: data.nonceStr,
    signature: data.signature,
    jsApiList: [
      'onMenuShareTimeline', // 分享到朋友圈
      ...微信接口列表
    ]
});

验证通过 wx.ready

wx.ready(calllback) 验证通过回调,微信接口方法必须在wx.ready的回调之后调用才有效

wx.error(callback) 监听验证失败回调

个人对微信JS-SDK接入封装: https://github.com/KID-1912/wx-sdk-api

微信接口

微信分享

imgUrl 分享封面配置的url必须是已加载完成图片资源

link 分享链接配置的url必须与 wx.configsignature 注入的 url 字段同一域名

踩坑

blob图片

微信H5端blob图片仅支持显示,不可被保存与分享