一、基本思路
1. 用户第一次进入小程序点击微信小程序授权,点击确认后->前端传三个值:code,iv,encryptedData.
2. code用于获取session_key
3.通过session_key,iv,encryptedData获取用户信息,此时已经拿到用户openid.
4.通过用户信息,创建用户token。token作为标明用户信息,下次再来小程序可以不需要授权登录。
二、思路的细节
1.对于第一步,用户点击确认授权后。这时调用后台接口。这是一个跨域请求,所以接口路由需要加入跨域中间件。
从前端获取三个值后,进入第二步
2. 由code获取session_key。
首先用到了composer安装的插件,这里面的路由访问涉及到了容器注入,(目前还不是很懂。。。)
找到sns类后看到下面的代码
可以看到这里调用了微信的接口。方法的参数是我们从前端获取的code.可以看到要返回session_key还需要appid和appsecret。
3.通过session_key,iv,encryptedData获取用户信息,此时已经拿到用户openid.
这个函数目前也是看不懂。。点进去后面也用到了容器注入和composer安装的插件(留个坑,后面来填),目前只知道通过这个函数$userInfo中便有了openid
4.有了openid后,我们小程序便可以辨明用户身份的唯一性啦。把用户的信息和openid等存入数据库中。接下来用这个openid来创建用户登录的令牌token
$user中已经有了openid,$type为用户登录类型。有了令牌token后,用户下次再进入我们的小程序就不需要再次授权登录了。