首先要明确一点,这里指的是在微信内浏览器使用的,利用微信公众号获取用户授权信息之后进行的注册登录,在经过上一次微信支付的摧残之后,这次做登录流程要顺利得多,简单描述一下流程。
首先贴一下微信开发者文档中对于网页授权的说明文档‘戳这里’,对于授权的接口如何使用,我这里不会详细的说明,文档对于接口参数写的还是比较清楚的,主要介绍一下注册流程
准备工作
- 确保公众号可以使用,拿到appid和密钥
- 微信公众平台修改授权回调页面
- 可以使用微信开发者工具调试
获取用户授权
1 | https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect |
这一步和微信支付的授权唯一的区别就在于scope
属性的不同,由于我们需要获取用户信息,就不能使用静默授权,而是使用scope=snsapi_userinfo
,通过在前台请求api,拉取授权页面,用户同意之后在回调页面获取code值。
获取用户openid
使用上一步拿到的code值,请求以下api1
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
这一步需要放在服务端请求,前端会跨域,请求成功后拿到返回的access_token
和’openid’
微信登录
拿到用户openid
之后,就可以查询数据库中用户信息了(注册时把用户微信登陆的openid和unionid存一下),如果有已经注册过的用户,直接登录,没有的话继续走注册流程
拉取用户信息
使用openid
和access_token
发起请求1
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
前台会跨域,同样放在后台进行,这样就拿到了微信用户的详情信息
注册用户
使用拿到的用户信息创建用户,成功后直接登录
需要注意的一点是,如果有多个微信应用时,同一用户在app,公众号,小程序这些获取到的
openid
都是不同的,但是unionid
是唯一的,可以通过unionid
来进行用户的识别
结束语: 没错,这一篇就是这么短!