伙伴们一起做了Javaweb小项目,微信登录授权模块是我负责,给大家普及后顺便发到这里,如果有不足的地方欢迎提出!
进入项目任意页面
进入项目任意页面,后台首先会判断该用户是否登录。
若没有登录(即session中没有用户信息)并且以下两种情况任意一个时
1. 首次进入该公众号
2. 授权过期
就进入以下授权页面。
第一步:用户同意授权,获取code
页面显示一个让用户点击的微信url,让用户点击
当点击确认授权后,自动跳入后台写好的url,获取到code
code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
第二步:通过code获取网页授权access_token
然后后台逻辑再次请求微信的url并拼接code参数,该请求所返回的json串里含有access_token(接口调用凭证)以及openId(用户与此公众号的唯一标识)。
access_token有7天有效期。当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
openId是用户与此公众号的唯一标识,永远唯一且不过期
第三步:通过access_token和openId获取用户信息
后台逻辑再次访问微信url并拼接两个参数,成功会返回下面的包含用户信息的json串,将用户信息存入数据库方便以后使用
第四步进入主页
完成以上授权,获取到用户信息后,标记该请求为已登录状态(即将用户信息放入session),后台逻辑跳入主页
授权登陆就此完成。
有兴趣继续看
这次授权了后,以后再次进入该项目,就从cookie中获取openId,就不用经过步骤一了(清空了cookie?那就再次授权咯),然后根据openid直接从数据库查到用户信息并标记该请求为已登录状态就可以了
附录:微信官方文档原文:
上面写的简略。如果你很爱学习很渴望力量,具体实现点链接:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
如果有不足的地方欢迎提出!