美文网首页
微信公众号开发

微信公众号开发

作者: 回调的幸福时光 | 来源:发表于2017-10-30 20:32 被阅读179次
开发工具

踩坑:在开发中使用的是chrome浏览器,结果打包后在微信中显示样式错乱。

建议:使用微信开发者工具进行调试,它和微信都是x5内核,这样保证开发和生产样式一致。

openid

微信开发是绕不开openid这个字段的,可以简单理解成用户的id。

开发前一定要询问清楚,后端如何给前端传递openid。

踩坑:曾经遇到一种方式,是后台通过cookie方式存储到浏览器,然而开发中存在延时问题,页面加载完了,还获取不到cookie,延时大约1s才可以获取的到。

建议:稳妥方式是让后台写一个登录接口,通过该接口获取openid。

jssdk

微信提供了jssdk,其中封装了很多方便的功能。

安装依赖

npm install weixin-js-sdk --save

jssdk需要通过config接口注入权限验证配置,才可以正常使用,其中的参数都是后端返回的,前端只要通过接口获取这些参数,并通过config验证即可。

公众平台绑定域名

使用jssdk是需要绑定域名的。JS接口安全域名:需要是一个公网域名。

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

这就导致本地开发无法调试jssdk功能,因为localhost:8080不是JS接口安全域名。

内网穿透/转发

想要调试jssdk,代码需要发布到域名对应的ip服务器上。但是这样上传太频繁了。

把内网映射到公网,这样就可以在本地进行调试了。

常见工具:ngrok、魔法隧道、花生壳等。具体可搜索关键字内网穿透/转发

微信头像跨域

踩坑:如果需要展示微信头像,请求后台返回的url会存在跨域问题。

建议:可以让后台返回头像的二进制文件(blob),在ajax中记得设置响应类型responseType:'blob',然后前端将blob转换成base64格式进行展示。

if (window.FileReader) {
     let fr = new FileReader();
     let img = new Image();
     fr.readAsDataURL(blob);
     fr.onloadend = (e) => {
         img.src = e.target.result;
         // appendChild(img)
     }
  }
生成海报/邀请函

通常会有生成海报、邀请函的需求,这些有两种方案:

  • 后端生成图片
    通过接口上传图片,后端生成图片并返回,前端展示。
  • 前端生成图片
    前端将dom转换成canvas或img。

这里主要讲第二种,前端生成图片:
插件:dom-to-img、html2canvas
实际效果:html2canvas比较模糊,dom-to-img的png、jpeg格式同样模糊,但是svg格式很清晰。

html2canvas模糊方案之一:
将 canvas 的宽高设置成容器宽高的 2 倍,处理生成的 canvas 图片模糊失真
可参考:html2canvas截图失真

注意: 除了模糊以外,html2canvas生成的图片和dom样式有不一致的地方。

长按保存/转发图片

踩坑:在微信网页中,长按普通的图片是可以保存或转发的,但是通过上一步dom转换的图片是svg格式,微信是不支持保存。

建议:

  • 生成图片后上传给后端,后端返回一个url。
  • 前端将svg转换成png
    • 通过window.devicePixelRatio获取设备像素比scale
    • canvas画布的大小是图片的scale倍(相当于提高图片精度)
    • 调用canvas的drawImage()在画布上绘图。
    • 调用toDataUrl()返回png格式的图片展示data URI
    • 设置img.src,并且宽高缩小scale倍(这里是等比缩放,所以不会模糊)
分享参数配置

jssdk分享接口中有一些参数配置项:

  • link
    分享链接,vue-router的hash模式,#后面的部分会被忽略
    建议:使用urlencode加密
    或者在#前面加一个?

  • imgUrl
    分享图标

  • 可以放到图片服务器上

  • 放到项目的assets目录中

参考:

toDataUrl

相关文章

  • 微信开发

    微信开发 公众号开发 微信WEB开发 JSSDK 小程序开发 公众号开发 公众号 订阅号 服务号 企业号 公众号开...

  • 微信公众号开发 (4) 网页授权

    一、前言 微信公众号开发 (1) 微信接入认证成为开发者 微信公众号开发 (2) 消息处理 微信公众号开发 (3)...

  • 微信公众号开发:微信服务号和订阅号的区别!

    微信开发又称微信公众平台开发、或微信公众号开发,分为微信服务号、微信订阅号、以及微信企业号,其中服务号和订阅号是企...

  • PHP微信公众号支付开发总结

    微信公众号开发是很常见的开发,其中微信支付占有很大的比重。微信公众号分为服务号和订阅号,服务号支持微信支付。 前期...

  • 基于JavaEE——微信网页(二)微信开发

    微信开发测试公众号(沙盒号) 微信API帮助文档 微信接口在线调试 首先申请微信开发的测试公众号,登陆后会看到微信...

  • 1 - 简介

    微信公众号开发 又称微信公众号二次开发。可以将公众账号由一个媒体型营销工具转化成提供服务的产品。 微信公众号开发的...

  • 微信公众号开发 (3) 菜单处理

    一、前言 微信公众号开发 (1) 微信接入认证成为开发者 微信公众号开发 (2) 消息处理 本文将实现 根据App...

  • 微信服务器接入

    这几天正在学习微信公众号开发,后台JAVA基于SSM框架对微信公众号进行开发。 微信公众平台“基本配置”。详细请参...

  • 微信公众号开发:获取openId和用户信息

    title: 微信公众号开发:获取openId和用户信息 tags: 微信公众号 categories: 笔记 ...

  • Springboot 之小程序公众号等资料

    公众号 Java微信公众号开发的精彩世界,学习微信公众号开发的相关概念,编辑模式和开发模式应用,以及百度BAE的使...

网友评论

      本文标题: 微信公众号开发

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