如果没什么意外,接下来要实现一个对接微信登录的需求,今天浏览了下相关文档,简单在这里用自己的文字把整个流程描述一下。因为还没有实际操作,所以可能会有理解上的偏差,真正实现后会再来修改和补充。
文档链接:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
首先在微信公众平台中的「开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息」设置一个回调 URL,这里配置一个二级域名就行了,例如 wechat.xxx.com
。
用户在登录时,先通过 snsapi_base
接口获取用户 open_id
,然后在我们的系统中通过这个 open_id
来获取用户信息,如果存在则直接完成登录,因为这种方式是用户无感的,使用体验比较友好。但这种方式无法获取用户最新的微信信息,不过通常来说不重要,因为用户会在应用内重新维护自己的资料,所以首次拿到用户头像昵称等信息后就可以了,之后不需要再通过重新获取用户信息来更新了。
如果查询 open_id
不存在的话,再通过 snsapi_userinfo
方式来获取用户信息,获取用户信息的流程如下:
- 发起一个重定向让用户到
snsapi_userinfo
授权页面,用户点击登录按钮,然后系统会访问我们的回调地址并带上一个code
。 - 我们通过
code
换取access_token
和refresh_token
,可以把refresh_token
保存起来,这样的话近 30 天内都可以通过这个直接换取access_token
来拉取用户资料,但通常没必要。 - 通过
access_toekn
+open_id
拉取用户资料。
拉取完资料后将用户 open_id
和资料保存在我们自己的数据库中,这个步骤可以看具体业务逻辑,大部分业务会在首次登录时将用户资料拉取下来展示在一个编辑页面,用户可以编辑后再提交保存,不管那种方式我们都已经为这个 open_id
创建了用户,这样之后用户再访问我们的应用时就无需再点授权按钮了。