怎么用python代码实现小程序登录流程时序
发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,这篇文章主要介绍"怎么用python代码实现小程序登录流程时序"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用python代码实现小程序登录流程时序"文章
千家信息网最后更新 2024年11月27日怎么用python代码实现小程序登录流程时序
这篇文章主要介绍"怎么用python代码实现小程序登录流程时序"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用python代码实现小程序登录流程时序"文章能帮助大家解决问题。
小程序登录
小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。
登录流程时序
说明:
调用wx.login()获取临时登录凭证code,并回传到开发者服务器。
调用auth.code2Session接口,换取用户唯一标识 OpenID和会话密钥 session_key。
之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。
注意:
会话密钥
session_key
是对用户数据进行加密签名的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到小程序,也不应该对外提供这个密钥。临时登录凭证 code 只能使用一次
小程序的登录总结
1 小程序端执行wx.login()获取code
2 将1中的code发送到后端,后端调用auth.code2Session这个接口,得到openid和session_key
3 自定义登入状态,我们生成一个key与openid和session_key相绑定。把key返回到小程序中
4 小程序端保存,然后下次请求需要登入的接口的时候,把key带上。
案例
# app.js的onLaunch中 因为登录是用户感觉不到的App({ onLaunch: function () { let that = this // 登录 wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId console.log(res.code) //拿到code wx.request({ url:that.globalData.baseurl+"/login/", data:{'code':res.code}, method:'POST', success(e){ console.log(e.data) // wx.setStorageSync("token", e.data.data.token) } }) } }), globalData: { userInfo: null, baseurl:"http://127.0.0.1:8000" }# dango后台中# urls.py 路由中path('login/', user.Login.as_view()),# user.py中from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom api.wx import wx_loginimport hashlib, timefrom django.core.cache import cachefrom api.models import Wxuserclass Login(APIView): def post(self, request): param = request.data print(request.data) if not param.get('code'): return Response({"status": 1, "msg": '缺少参数'}) else: code = param.get("code") user_data = wx_login.get_login_info(code) if user_data: val = user_data['session_key'] + "&" + user_data['openid'] md5 = hashlib.md5() md5.update(str(time.clock()).encode("utf-8")) key = md5.hexdigest() cache.set(key, val) # 放进内存redis库中,把key传给前端当token.下次前台带着key就能拿到val has_user = Wxuser.objects.filter(openid=user_data['openid']).first() # 判断openid是否存在 if not has_user: Wxuser.objects.create(openid=user_data['openid']) return Response({ "status": 0, "msg": "ok", "data": {"token": key} }) else: return Response({"status": 2, "data": "无效的code"})# models.py中:from django.db import modelsclass Wxuser(models.Model): id = models.AutoField(primary_key=True) openid=models.CharField(max_length=255) name = models.CharField(max_length=50) avatar = models.CharField(max_length=200) language = models.CharField(max_length=50) province = models.CharField(max_length=50) city = models.CharField(max_length=50) country = models.CharField(max_length=50) #gender = models.CharField(max_length=50) creat_time = models.DateTimeField(auto_now_add=True) update_time = models.DateTimeField(auto_now=True) def __str__(self): return self.openid# settings.py中:自己注册的微信小程序信息AppId=""AppSecret=""code2Session="https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code"# wx_login.py中:from api.wx import settingsimport requestsdef get_login_info(code): # 拼接路径 code_url = settings.code2Session.format(settings.AppId,settings.AppSecret,code) response = requests.get(code_url) # 返回的是json数据 json_response = response.json() # 把json数据转换为字典 if json_response.get('session_key'): return json_response else: return False# cache缓存配置redis数据库
关于"怎么用python代码实现小程序登录流程时序"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
登录
程序
用户
密钥
数据
时序
流程
代码
开发者
接口
服务器
标识
知识
开发
服务
凭证
后台
案例
行业
身份
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全领导小组和工作记录
网络技术对旅游的影响
搭建vpn服务器玩游戏
浏览器找不到服务器
利用管理和服务器
优惠券规则数据库设计
安卓软件开发大神
学网络安全然后干嘛
三级网络技术题库破解版软件
c从sql数据库读取数据
如何导入ug加工数据库
硕腾软件开发
快手软件开发工程师
主数据库文件的逻辑文件名
数据库如何查看存储过程
网络安全问题.
山西虚拟服务器管理软件云主机
网络安全应急处置预案演练
家用路由器接服务器不能ssh
网络安全学校西安
2008代理服务器
仪器仪表技术和网络技术
手机网络安全饭堂广播
数据库fieldcount
河北网络安全宣传周知识答题
泾县智能软件开发服务维修价格
pg数据库插入语句写法
滨州学院计算机网络技术代码
在线学习网络技术
sql数据库查看备份设备