如何实现小程序的登录与授权
登录: 如果我们要实现小程序的登录,不妨尝试在开启小程序的时候完成登录。也就是说我们可以在app.js中的onlaunch方法中添加小程序登录代码。 如下: //微信的登录方法wx.login({ success: res => { //登录成功后会返回一个微信端提供的 code ,用来自定义登录使用 console.log("code",res.code); //向自己的后台发送请求 wx.request({ url: this.globalData.URL+'login/', data:{ code:res.code }, header:{ "content-type": "application/json" }, method:"POST", success:function(e){ console.log(e) //请求成功后会返回一个自己后端生成的 token 用来做其他操作的校验,把token保存在本地 wx.setStorageSync("token", e.data.data.token) } }) // 发送 res.code 到后台换取 openId, sessionKey, unionId } }) 登录后复制 后端代码: from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom app01.wx import Wx_loginfrom django.core.cache import cachefrom app01 import modelsimport timeimport hashlibclass Login(APIView): def post(self,request): param = request.data if param.get("code"): #Wx_login是微信为我们提供的登录方法,这里的data已经有一个session_key和openid了 data=Wx_login.login(param.get("code")) if data: # 1 session_key+时间戳等到一个key.(md5 md5=hashlib.md5() md5.update(data.get("session_key").encode("utf8")) md5.update(str(time.time()).encode("utf8")) key=md5.hexdigest() #2 session_key与openid做绑定等到val val=data.get("session_key")+'&'+data.get("openid") #3key->val存到redis, cache.set(key,val) #4把openid存到数据库 user_data=models.Wxuser.objects.filter(openid=data.get("openid")).first() if not user_data: models.Wxuser.objects.create(openid=data.get("openid")) #5把key返回给小程序 return Response({"code": 200, "msg": "suc","data":{"token":key}}) else: return Response({"code": 202, "msg": "code无效"}) else: return Response({"code":201,"msg":"缺少参数"})…