欢迎光临企业官网建站网站,提供自助建设系统平台服务

企业官网建站

专业为公司品牌推广建设网站

小程序登陆(Laravel后台)

作者:jcmp      发布时间:2021-04-20      浏览量:0
小程序登陆相比微信登陆要繁琐一些,因为登

小程序登陆相比微信登陆要繁琐一些,因为登陆的时候不能直接拿到用户的信息。需要再次到后台进行解密。

这篇文章所用的服务架构如下:

1、Laravel后台:主要是管理用户,和一些操作逻辑登陆逻辑。

2、微信后台:主要是储存微信配置项,用户微信用户授权解密等等。

3、微信官方后台:微信官方服务器。

4、小程序前端

首先列出应该查看的小程序API:

1、 wx.login(Object object)

2、 wx.getUserInfo(Object object)。

3、 code2Session

下面是流程图:

其实认真看图就完全明白了,为了照顾你们可能看不懂我写的字,我就简单说一下流程。

1、用户打开小程序,小程序就执行wx.login方法。会静默获取到js_code。留着备用。

2、 小程序前端 接下来调用wx.getUserInfo方法(withCredentials参数为true),注意这个方法需要用户授权。也就是弹出万恶授权框,⚠️注意用户拒绝授权要做处理(也就是啥都不让用户干,跳到一个页面放一个授权button,点击重新弹出授权框)。授权成功后会返回encryptedData、iv和一堆验证的数据,留着encryptedData、iv备用。

3、 小程序前端 用刚才拿到的 js_code 去 Laravel后台 获取3rdSession(后面说这是个啥)。

a)这个接口都干了啥,返回了啥?

接受到js_code之后, Laravel后台 就用这个js_code去请求 微信后台 的获取open_id和session_key接口。

b)微信后台的这个接口都干了啥?

微信后台 调用 code2Session 接口(上面提到过)。这个接口接收js_code,返回open_id和session_key,返回给 Laravel后台 open_id和session_key(用来解密,留着备用)。

c) Laravel后台 接收到open_id和session_key之后,把这两个放起来存着,因为经常变,放在缓存中就可以。我用的是这种格式[open_id(3rdSeesion) => session_key],之后把open_id(3rdSeesion)返回给 小程序前端。

a)这个接口干了啥?

Laravel后台 用传递过来的open_id(3rdSession)、encryptedData、iv、去请求 微信后台 解密接口。

b)这个接口干了啥?

微信后台 用传之前的session_key 和传递过来的 iv去解密encryptedData。将解密后的信息返回给 Laravel后台。

c) Laravel后台 接收到微信后台返回的用户信息之后,用里面的unionId去做和网站用户的处理(此处看自己网站的逻辑)。处理之后将token返回给 小程序前端 。接下来就可以实现用户认证的请求,也就是登陆状态。

完事了。