先来体验一下微信公众平台二维码授权功能 https://a86.cn/weixin3rd/index.jsp
一、目的
实现店铺的微信公众号能够快速无误且零配置的与天狗微信服务端进行绑定,节省运营人员的沟通成本。
二、微信开放平台开通流程
- 通过开发者资质认证
- 创建第三方平台(应用)
- 测试第三方平台
- 申请全网发布
三、技术流程
公众号一键登录授权给第三方平台方的技术流程
下面对授权流程进行详细介绍:
1、用户进入第三方平台(天狗)微信管理系统
一般而言,用户需要先进入第三方平台方网站,如:http://store.51tiangou.com
2、第三方平台(天狗)方获取预授权码
预授权码是第三方平台(天狗)方实现授权托管的必备信息,预授权码可通过调用开放平台接口获取
3、发布后修改和覆盖现网
第三方平台方可以在自己的网站首页中放置微信公众号登录授权的入口,引导公众号运营者进入第三方平台授权页。网址为:https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=xxxx
该网址中第三方平台方需要提供第三方平台方的appid、预授权码pre_auth_code和回调URI
4、用户确认并同意登录授权给第三方平台方
用户进入第三方平台授权页后,需要确认并同意将自己的公众号登录授权给第三方平台方,完成授权流程。
5、授权后回调URI,得到授权码和过期时间
授权流程完成后,会进入回调URI,并在URL参数中返回授权码和过期时间(redirect_url?auth_code=xxx&expires_in=600)
6、利用授权码调用公众号或小程序的相关API
在得到授权码后,第三方平台方可以使用授权码换取授权公众号或小程序的接口调用凭据(authorizer_access_token,也简称为令牌),再通过该接口调用凭据,按照公众号开发者文档或小程序开发文档的说明,去调用公众号或小程序相关API
四、开发点概述
- 微信开发平台appid、appsecret、token等配置信息等保存、获取
- 微信心跳监测component_verify_ticket的解析、存储
- 用户授权成功后,公众账号信息的存储,与店铺的绑定
- 已授权公众号授权码、accessToken、refreshAccessToken的存储,定时刷新
- 已授权公众号事件和消息的处理
五、对现有系统流程的影响
- 微信公众号需要进行账号信息的补充完善,例如店铺的绑定
- 第三方平台(天狗)与公众号间的数据交互全部需要进行加密处理
六、踩坑
- 需要将微信官方提供的aes.jar安装到私服
- 每10分钟微信会向注册开发平台时填写的url发送一个verifyTicket(心跳监测),想要解密该ticket不仅需要获取微信传过来的参数,还需要将request再次解析为BufferedReader才能够获取到其中的xml数据。
- 需要替换掉jre/lib/security目录里面的2个jar,否则无法进行正确解密微信数据
- 生成的授权二维码必须在本网站内才能够正确的被扫描使用,否则会报
- 授权后的公众号信息一定好妥善保存,一旦丢失还需要进行重新授权
没有全网发布的第三方平台,需要添加公众号ID(gh_xxxxx之类的)到测试帐号里才可以添加,否则需要申请全网发布,不然就会报上面图中的错误