微信公众号(服务号)已经推出很久了,但是第一次接触的人,或多或少会走一些弯路,下面是我在开发中见到的一些问题,也给自己做个备份
万事开头难
其实只要是针对第三方平台的开发,第一件要做的事儿不是开干,而是先了解它。
- 官方文档先读一遍(了解它再征服它~) https://mp.weixin.qq.com/wiki
- 准备一个已备案的域名和一个外网服务器,家里有些宽带有外网IP,不过80端口都被封了,但是443是可以用的~
- 微信测试号,不需要线上申请号,扫描二维码直接登录,页面略丑 https://mp.weixin.qq.com/debu...
- 在线调试用具 https://mp.weixin.qq.com/debu...
- 本地开发工具(公众号&小程序) https://mp.weixin.qq.com/debu...
一些功能点的使用场景
带参数的二维码
如果要对一些活动的二维码做标记(来源、场景、关注绑定等),关注扫描该二维码服务端会同时收到二维码中携带的参数。
个性化菜单
可用根据用户的属性(标签、性别、手机系统、地区、语言)显示不同的菜单,可以和带参数的二维码结合使用。
客服消息
当用户主动和公众号有一些交互(发信息、点击菜单、关注公众号等)时,在48小时内,可以主动给用户推送消息。
JS-SDK
只要是在微信里面传播的页面,绝对离不开微信提供的强大的SDK功能,支持:分享内容自定义、图像能力(拍照、选图等)、音频能力(录音、播放等),具体的功能自己挖掘。
遇到过的一些问题
- 测试环境:必须关注测试服务号,否则你会碰到各种异常问题不能自拔。
- 测试环境:模板数量有限制,最多10条,多了就得删。
- 测试环境:appID和生产环境要区分开,不要混淆(当然,这个和mysql等配置同理)。
- 测试环境:不要使用生产环境的appID生成access_token(生产环境的token会失效,导致错误)
- 测试环境:只支持配置一个js安全域名(线上是3个)。
- 测试环境:授权回调页面域名隐藏在体验接口权限表中,仔细找。
- 接收到微信的所有请求必须正常回复(输出一个success或者空),否则微信会认为处理失败,重试N次。
- access_token放到分布式cache中,不要等失效,通过定时脚本在过期前更新。
- 区分清楚ToUserName和FromUserName,to是你,from是用户(用户的open_id)~
- 调用js-sdk必须配置js安全域名。
- 用户授权分两种,隐式和显式。隐式:只能获取到用户open_id,如果不关注公众号,不能获取用户信息。显式:只要用户点击确定,就可以获取用户昵称等信息。
- 调用所有js-sdk都必须通过接口获取签名数据(每次调用都需要:比如动态更改了分享标题等)
- 前端页面使用vue.js类框架时,全部通过api获取数据,js-sdk签名中的url需要通过
$_SERVER['HTTP_REFERER']
获取,而不是$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']
。 - 带参数的二维码分为永久和临时两种,永久的数量有限,临时的数量相对较多。比如和单个用户属性相关的二维码使用临时的二维码优先。
- 通过js-sdk上传的素材(音频、图片等),微信先会给一个media_id(通常有效期为3天),当我们使用的时候通过media_id下载下来。
- 模板消息,推送次数超多,但是必须使用模板库的一些固定格式内容,自己申请成功率极低。
- 页面启用https后,页面的资源也必须使用https,当然这个不止微信里面是这样。
不是总结的总结
工欲善其事必先利其器,无论做什么,学什么,都得先把它的文档看一遍,工具安装一个。直接上手整,一脸懵逼浪费时间不说,活儿能不能干好都是个问题。
大家还遇到过什么问题或者坑,欢迎留言分享~