文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用python代码实现小程序登录流程时序

2023-06-30 01:35

关注

这篇文章主要介绍“怎么用python代码实现小程序登录流程时序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用python代码实现小程序登录流程时序”文章能帮助大家解决问题。

小程序登录

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识,快速建立小程序内的用户体系。

登录流程时序

怎么用python代码实现小程序登录流程时序

说明:

之后开发者服务器可以根据用户标识来生成自定义登录态,用于后续业务逻辑中前后端交互时识别用户身份。

注意:

小程序的登录总结

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代码实现小程序登录流程时序”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯