微信网页授权官方 wiki 页: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
授权时序图:
要点:
1. 用户在微信客户端访问 H5 页面, 我们需要知道该用户是谁, 就需要进行微信 oauth2.0 授权. 我们拼接一个授权地址, 返回给前端, 前端浏览器进行重定向到该链接. 参考链接如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https://chong.qq.com/php/index.php?d=&c=wxAdapter&m=mobileDeal&showwxpaytitle=1&vb2ctag=4_2030_5_1194_60&response_type=code&scope=snsapi_base&state=123#wechat_redirect
2. 如果不是静默授权 (snsapi_userinfo), 则弹出要求获取用户信息的窗口, 用户需要点击确认登录; 如果是静默授权(snsapi_base) 则不会有弹窗.
3. 授权后, 微信要求用户重定向到一个地址(第一步拼接的 redirect_uri), 并将 code 和 state 传给我们. 我们根据 code 去微信换取 access_token, 再通过 access_token 和用户 open_id 到微信拉取该用户信息.
注意点:
(1)这个 redirect_uri 一般是我们的接口地址, 例如: http://www.xxx.com/api/1.0/web/weixin/callback
(2)只要用户关注了我们的服务号, 即使是静默授权, 也是可以获取用户的信息
拉取到的用户信息示例:
WxMpUser[
subscribe=true
openId=oNfgYuE....I4tzGk
nickname = 世界
sex = 女
language=zh_CN
city=
province=
country=
headImgUrl=http://wx.qlogo.cn/mmopen/...xUjaaIM/132
subscribeTime=1487224007
sexId=2
remark=
groupId=0
tagIds={}
]
4. 拿到用户信息后, 我们就知道了该用户是谁, 在后台就可以将用户信息存入数据库, 给用户分配一个系统用户 id, 在后台帮助用户进行登录, 将用户信息存入 session 等后续操作.
来源: http://blog.csdn.net/pansanday/article/details/79228262