怎么用python代码实现小程序登录流程时序
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍"怎么用python代码实现小程序登录流程时序"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么用python代码实现小程序登录流程时序"文章
千家信息网最后更新 2025年11月14日怎么用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安全错误
数据库的锁怎样保障安全
互联网经济金融科技
阿里云服务器管理从哪里进
十堰网络安全技术在哪学
网络服务器安装
合并同一个数据库表数据
学习网络安全承诺书心得企业
微信本地数据库文件密码爆破
福建数据库防护箱工程
上海夺汇网络技术有限公司做什么
淘宝客服网络技术
服务器异常怎么设置
网络安全宣传手抄报画什么
陆丰天气预报软件开发
供应链软件开发中心
机架式服务器直销厂家
英国国家网络安全大学排名
登封大数据库建设项目
cnki数据库电子资源网址
oracle数据库表分页
密云区咨询软件开发怎么样
七星关区网络安全
数据库表中emp是什么意思
公安局网络安全宣传
中心数据库怎么建立
一般国企干软件开发
网络安全学前教育心得体会
护面网络安全课 有感
新能源网络技术服务
软件开发合同人月
意大利网络安全研究生