我们在做微信公众号的时候,简单的情况就设置下自动回复,添加下自定义菜单,菜单按钮设置到指定的模版页面。那有种情况:我们需要在公众号获取到用户信息,并且能绑定到自己的平台账号上(当然必须是有自家的服务平台,要不没这需求点),估计不能用跳转到一个静态页面的方式了。
- 设置菜单
- 公众号的用户绑定服务平台的帐号
- 使用测试公众号功能
- 在本地调试微信接口
unionId 和 openId
如果需要公司多个平台用户统一,那么就需要 unionId
全局唯一
,否则用 openId公众号发送消息必须要有
。
首先我们看下菜单的设置
1. 扫码进入 https://mp.weixin.qq.com/
2.自定义菜单, 可以在网页中设置地址。
2.1 需要在 “基本配置” 的 “IP 白名单” 以及 服务器配置。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-APLbobwC-1615107490398)( https://img2020.cnblogs.com/blog/714390/202103/714390-20210305152734076-111439683.png)]
2.2 并且配置 “公众号设置” 中的 功能设置 中的域名
这个是必须进行设置的
进入主题:怎么绑定用户信息,然后拓展不影响线上服务器(生产环境) 情况下,继续迭代开发功能 ?
1.进入测试
然后看到界面如下
其实就是一个测试环境的公众号,开发人员可以扫码进入,就相当于关注了一个新的隔离的公众号,并且可以单独的设置公众号对应的安全域名(重点:能购买多个公众号的企业,直接来个测试用的,就不需要这样。。)
2.消息模版功能
3.很多的能用的功能(重点是红色,安全回调域名)
对最开始的问题进行处理
1.将关注了公众号的用户,点击按钮,跳转指定页面,并且需要验证是在自己平台中对应了帐号
**我的做法 **
1 添加按钮 ,对应的地址是 http://安全域名/test
这个接口中,跳转下面的路由(后台代码直接可以重定向请求)
路由A :
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2F${self.wechat.api.host}%2Fwechat%2Faccess&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
其中redirect_uri 就是腾讯服务器回调你服务器的地址, ${self.wechat.api.host} 就是你的服务器 ,%2Fwechat%2Faccess 就是路由, 进行过了 url encode。
这个 code 和 state 就可以 使用 https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
来获取用户的 openId, 以及 unionId 了, 那么就可以把这个对应到自己平台的帐号上进行绑定。
(eg:比如发现用户没有绑定,就跳转到页面让用户登录帐号绑定; 如果unionId 有对应的平台帐号,那么直接进入主界面)
这样,就实现了用户绑定,也可以针对需要涉及权限的web界面,进行权限验证过。
总结下就是: 自己接口—跳转 A 路由(设置回调自己路由B)— 跳转自己的web界面(在界面的url上附带参数进行验证)
2.测试公众号怎么添加菜单
上面仔细看,发现测试的里面有自定义菜单权限,那么来 post 操作一波。 添加删除如下:
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=42_4S6RAhQ32dm8WhTNWVOw
{
"button":[
{
"type":"view",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC",
"url":"http://安全域名/wechat/index"
}
]
}
https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=42_4S6RAhQ32dm8WhTNWVOwY8iZXrlOoV_HQHNA0
3.安全域名
因为微信是需要微信服务器
回调你服务器验证的,那么会帮定一个域名。
有可能,确认以后,不成功。。。
那么你域名对应的服务器上,需要部署一个接口, /wechat 路由
口里面直接 return echostr; 这就是安全验证, 当然,可以写的很复杂,进行安全验证!!!
4.微信开发、或者需要回调验证的接口中,怎么可以在本地进行
序号 | 方式 |
---|---|
1 | 买固定IP |
2 | 可以映射一个外网到本地路由的(蒲公英 ?) |
3 | ssh 内网穿透 |
4 | 。。。。。。 |
这样,针对 问题1 的接口,就可以直接本地断点调试了,很方便的看 debug 。。。
可以关注来获取对应的源码