一、整体流程
1、点击微信登录按钮,跳转微信扫码页面
2、用户扫描登录码,匹配用户信息
3、未匹配到用户信息,做注册操作
4、匹配到用户信息,做登录操作
微信授权流程说明,参照微信开放平台
获取access_token时序图
1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2. 通过code参数加上AppID和AppSecret等,通过API换取access_token;
3. 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
二、流程细化
请求code
1、用户点击微信登录按钮,跳转到微信扫码界面,第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect,需要填写的信息为APPID,redirect_uri,scope,state
2、用户确认登陆,会根据redirect_uri中的回调页面地址返回所需的授权码,此时可以获取地址栏信息,向后台发送请求,进行用户的信息判断。
3、后台接受请求之后,获取到授权码信息,向微信开放平台发送第二次HttpClient请求,携带授权码等信息https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code去获取用户的令牌access_token以及openId信息,再和数据库中的微信用户数据进行比较,如果存在则直接免密登陆
4、数据库中不存在用户信息,返回前台令牌和openId,并且跳转用户注册界面,准备进行用户的微信注册服务。使用电话号码绑定用户信息,如果用户已经通过了电话注册了账号,则直接将微信扫码的信息和电话信息绑定在一起,如果没有注册过则需要重新生成微信用户信息和电话信息,此时发送第三次HttpClient请求,https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID,获取微信用户的扫码信息,用于保存在数据库的微信用户列表中。
5、总结:第一次请求,获取用户的授权码信息
第二次请求,获取令牌等其他信息
第三次请求,利用令牌可以获取用户的其他信息