网页微信扫公众号二维码登录培训系统
一、微信服务号
1、注册微信公众号服务号,花300大洋/年认证,获取授权登录功能
2、登录公众号,左边菜单,设置与开发——基本设置
2.1 设置开发者密码,设置IP白名单
2.2 服务器配置,填写例子
服务器地址url,用来接收微信推送消息的网址,如:http://wx.xxxx.com/api/weixin/callmsg
令牌(token),自定义的字符串,相当于加密的钥匙,例如:abcdefg
消息加解密密钥,随机生成
消息加解密方式,兼容模式
设置好后,保存,会验证服务器地址是否能访问
微信推送的验证消息是:{"signature":"3206ae3f24c0820f727da31a1f16d325a3f14f11","echostr":"1020474280076623571","timestamp":"1713608707","nonce":"2029272216"}
获取timestamp,nonce两个字段,和定义的token,组成数组,升序排序,再拼接为字符串
sign=sha1(字符串)
判断(signature==sign)就输出echostr的值,验证通过
2.3 公众号设置——功能设置——网页授权域名
二、生成公众号二维码
微信官方文档:https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html
1、获取access_token
2、获取ticket
3、显示二维码
官方的代码拿来即可用,不再贴。
扫码后微信往上面设置的服务器地址推送一条扫二维码事件的消息
消息结构参考:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html
其中包含了用户的OPENID,记录到数据表中。
显示二维码界面做一个计时器判断用户登录情况
坑:我用的是TP,在获取微信消息推送时候踩到了,验证服务器的时候用input()可以获取到。
接收推送消息是XML结构要用php://input获取数据流方式。