首先在我们的web层里边,controllers里边新建了api的一个包,里边有__init__.py文件,这里是统一注入我们api的标识,里边有蓝图,引入到我们www里统一注册,统一资源api,api这个目录是我们小程序使用的
之后我们新建member,有两个方法,一个是授权注册登陆,一个是是否注册,
检验注册的原理是,当我们第一次进入小程序时候,前端应该显示授权登陆,因为没有微信授权该小程序,也就可以理解为没有注册,当我们已经注册之后,其实已经知道我们的appid就可以直接通过我们的wx.login方法获取code
通过code获取我们appid就可以知道该用户是否在我们这注册过,如果注册过的话,我们就不需要在用wx.getUserInfo这个方法来获取我们用户的基本信息,因为我们已经有了,再次获取只是浪费请求,
checkLogin就是通过我们传过来的code获取我们的apenid,通过我们的绑定关系表来确定是否已经存在,如果没有存在说明是没有绑定的,那么我们就需要走授权登陆的接口,如果member信息绑定了但是获取不到,那么说明也要进行授权登陆,最后统一生成一个token,这个token就是我们未来请求所有api需要带到头部的信息,通过token验证有效性
login方法其实很简单,通过code信息获取我们的openid,将我们的member表和oauth_member_bind绑定关系表,进行主外键关联,在我们的member住将数据注册进来,在绑定关系表也注册进来,之后同样返回token信息给我们的前端小程序系统
这里我封装了一个统一获取openid的方法
如果获取,来看开发者文档
wx.login方法可以获取code,code是可以去换取我们的openid的,通过上方的url传入appid,小程序app secret 和code发送给一个get请求,appid和secret在我们开发设置中获取
参数都有了,我们就用requests发送一个get请求,获取返回的openid