Zeichnen Sie eine Iteration von SSO der Low-Code-Entwicklungsplattform auf – die Anmeldung des im WEB eingebetteten Miniprogramms und die PC-seitige WeChat-Scancode-Anmeldung
微信小程序嵌入WEB的登录和PC端微信扫码登录,难度不大,但涉及修改的地方比较多,涉及到我的BAAS平台、低代码开发平台、微信小程序。特记录一下。
一、微信小程序嵌入WEB的登录。
解决的问题:在微信小程序中嵌入WEB,点击原生小程序登录按钮,实现小程序登录,如何让嵌入的WEB也同时实现登录?
思路:
1、对于嵌入WEB并需要登录后操作的页面。
打开此页面时,判断是否已登录。如果未登录,显示原生页面,并出现登录按钮。
如果小程序已经登录,显示嵌入的WEB页面,并将登录信息(包括token、用户信息)通过url传参,WEB页面接收参数后,将token发到BAAS平台的JWT验证接口验证,验证通过(也可以不验证),执行登录相关流程。
2、未登录时,点击登录按钮,实现小程序登录,刷新页面。
二、PC端扫小程序二维码登录
思路:
1、PC端生成二维码
生成二维码:将PC端扫码登录需要的小程序专用页面的path后加上scene参数。scene参数随机生成。然后调用BAAS平台的生成小程序二维码的专用接口,将这个小程序的url生成为小程序二维码。
存储二维码:将生成的二维码url存在本地,有效期1小时。
出现二维码的时机:打开登录modal时,默认登录方式为微信扫码登录。判断本地是否有有效的登录二维码,如果没有则生成一个。
2、微信扫码并登录
微信扫登录二维码,打开小程序PC端扫码登录的专用页面,并带scene参数。
点击登录,这里和正常登录有点不一样,需要将scene参数一起发给BAAS平台的小程序登录专用接口。
BAAS平台的小程序登录专用接口,做了一些修改:将scene参数加入最后输出的json中,并在输出数据前,将要输出的登录数据存入redis(转成字符串再存入)。
小程序登录后,显示登录成功提示信息。并显示“小程序退出”按钮,点击此按钮,将在小程序端退出(这是为了防止下次扫码登录时,小程序端未退出而没有出现“登录”按钮)
3、PC端自动登录
PC端的登录二维码出现后便开始轮询一个专用的islogin接口,5秒轮询一次(太快了没必要)。带参数scene。如果接口返回false则5秒后再请求,如果返回不是false而是登录信息,则停止轮询,从登录信息中取出token发送到BAAS平台的JWT的验证接口验证,通过验证后执行登录流程。
这个接口是本次迭代新增的。它根据scene判断redis中是否有相应的数据。如果没有,则返回false,如果有,则从redis中取出相应数据,转成json,然后返回,返回前,将redis中相应数据删除。