文章目录

  • 登录流程图及个人理解
  • 登录接口源码

登录流程图及个人理解

1、前端将由wx.login()方法获取到的用户临时登录凭证code(只能使用一次)传给后台服务器(即登录接口)
2、后台利用微信小程序的appid、appsecret以及前端传过来的code以GET请求方式调用微信提供的相关API

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

得到用户OpenID(关于当前小程序的唯一标识)和会话密钥session_key(对用户数据进行加密签名的密钥)
3、出于安全考虑,微信官方要求开发者不能将会话密钥下发到小程序,所以要想确保用户登录的唯一性(即知道登录的用户对应的是数据库中哪一个OpenID和会话密钥)就需要结合OpenID和session_key自定义登录态(例:可以在数据库中为每一个用户加一个自增的UserID字段与OpenID、session_key对应)
4、前端调用后台登录接口时便将自定义的登录态(例:对应UserID)返回,前端在需要对用户相关数据进行操作时便可通过得到的登录态对与之对应的用户数据进行操作

登录接口源码

from flask import Flask
import requests, jsonapp = Flask(__name__)@app.route('/login', methods = ['POST'])
def login():data = json.loads(request.get_data().decode('utf-8')) #将前端Json数据转为字典appID = 'APPID' #开发者关于微信小程序的appIDappSecret = 'SECRET' #开发者关于微信小程序的appSecretcode = data['code'] #前端POST过来的微信临时登录凭证codereq_params = {'appid': appID,'secret': appSecret,'js_code': code,'grant_type': 'authorization_code'}wx_login_api = 'https://api.weixin.qq.com/sns/jscode2session'response_data = requests.get(wx_login_api, params=req_params) #向API发起GET请求data = response_data.json()openid = data['openid'] #得到用户关于当前小程序的OpenIDsession_key = data['session_key'] #得到用户关于当前小程序的会话密钥session_key'''下面部分是通过判断数据库中用户是否存在来确定添加或返回自定义登录态(若用户不存在则添加;若用户存在,我这里返回的是添加用户时生成的自增长字段UserID)'''if openid and session_key:'''在数据库用户表查询(查找得到的OpenID在数据库中是否存在)SQLalchemy语句:user_info = User.query.filter(User.OpenID == openid).first() '''if user_info is None: #不存在'''将得到的OpenID添加到数据库得用户表SQLalchemy语句:user_info = User(OpenID = openid)db.session.add(user_info)db.session.commit()'''return json.dumps(user_info.UserID, ensure_ascii = False) #将UserID转为Json返回return "code失效或不正确"if __name__ == '__main__':app.run(host = '0.0.0.0', port = 80)

Python-Flask微信小程序登录流程详解及后台实现相关推荐

  1. Python Flask微信小程序登录流程及登录api实现代码

    1.小程序端调用wx.login 2.判断用户是否授权 3.小程序端访问 wx.getUserInfo 4.小程序端js代码:+ wx.login({success: resp => {// 发 ...

  2. 微信小程序支付流程详解

    原创 Dr Hydra 码农参上 2020-11-22 11:00 收录于合集#微信开发技术3个 最近在工作中接入了一下微信小程序支付的功能,虽然说官方文档已经比较详细了,但在使用过程中还是踩了不少的 ...

  3. 微信小程序退款流程详解

    原创 Dr Hydra 码农参上 2020-11-29 11:00 收录于合集#微信开发技术3个 在上一篇中我们介绍了微信小程序的支付流程,这一篇接着讲一下小程序的退款流程,首先看一下官方给出的介绍: ...

  4. 【迷宫】地下迷宫游戏-微信小程序开发流程详解

    可曾记得,小时候上学路边买的透明铅笔盒,里面内嵌了一个小球,它用重力可从起点滚动到终点,对小朋友来说是感觉有趣的,在这个游戏的基础上,弄一款微信小程序的迷宫探索游戏试试,在不同关卡的迷宫中解开机关与谜 ...

  5. 【数独】数独游戏-微信小程序开发流程详解

    有没有玩过数独游戏呢,听说,它是一个能训练大脑思维的棋盘类游戏,游戏规则很简单,通过小程序来实现很容易,非常适合对数独游戏逻辑感兴趣的同学,选择它开发入门吧. 准备 会使用微信开发者工具, 有Java ...

  6. 【答题】在线答卷-答题系统的微信小程序开发流程详解

    用死记硬背的方法学习的学生,面对桌上堆积成厚厚的书本,是否感觉鸭梨山大呢,想着教育却面临着学习成本不小问题,是否感觉各种不便呢,如果对编程代码有感兴趣,不妨试试做一个自己的在线答题系统,这里可以用微信 ...

  7. 【拼图】拼图游戏-微信小程序开发流程详解

    还记得小时候玩过的经典拼图游戏吗,上小学时,在路边摊用买个玩具,是一个正方形盒子形状,里面装的是图片分割成的很多块,还差一块,怎么描述好呢,和魔方玩具差不多,有没有听说叫二维的魔方,这里用小程序把它实 ...

  8. 【飞行棋】多人游戏-微信小程序开发流程详解

    可曾记得小时候玩过的飞行棋游戏,是90后的都有玩过吧,现在重温一下,这是一个可以二到四个人参与的游戏,通过投骰子走棋,一开始靠运气,后面还靠自己选择,谁抢占先机才能赢,还可以和小伙伴们一起玩,狭路相逢 ...

  9. 【跳棋】跳棋游戏-多人游戏-微信小程序开发流程详解

    看到跳棋游戏,一个2到6人可一起玩的游戏,于是联想起,自己上小学时候陪同学们玩过的弹珠游戏,是不是跟跳棋游戏很像呢,看了跳棋玩法,有兴趣就研究,这里把跳棋游戏给弄出来了,想知道地图怎么画,对此感兴趣的 ...

最新文章

  1. 取得Repeater内部控件命令名与命令参数
  2. 【连载】Scala程序设计:Java虚拟机多核编程实战——简介
  3. CTreeCtrl标签的编辑
  4. Web-Scale Data
  5. Scrapy框架的学习(12. scrapy中的模拟登陆,发送post请求模拟登陆)
  6. 交互规则_您必须永不中断的10条交互设计规则
  7. FreeSql 导航属性的联级保存功能
  8. ps怎么缩放图层大小_PS如何调整图层大小?Photoshop调整图层大小快捷键
  9. Selpg—Golang
  10. 微信小程序-detail详情页数据动态展示
  11. paypal如何获取API签名
  12. Emulator: Process finished with exit code -1073741515 (0xC0000135)错误
  13. 二. 再熟悉 Markdown 标准语法
  14. win10怎么调用计算机,win10如何打开电脑设置?win10打开电脑设置的方法
  15. windows2008 r2 sp1 启用网络发现设置无法保存的解决办法
  16. 判赔腾讯108万,科技公司为公众号“刷量”构成不正当竞争
  17. pom.xml详解撸一下基础
  18. 乘法“*”和点乘“.*”除法“/”和点除“./”区别
  19. 自定义工具类-----GPS、网络定位
  20. 阿里云进阶课程三——基于云服务器构建微信公众号管理系统

热门文章

  1. 药一点门诊医生开方管理系统
  2. 如何解决旧版本的node和npm卸载不干净导致的用homebrew安装新版本过程中出现的问题
  3. 华为手机崩溃后自动重启
  4. linux挂载ssd到根目录下,linux启动时挂载ssd错误
  5. Python 日期格式,%W 每年的第几周,把星期一做为第一天
  6. 树莓派(Linux)音频输出接口(HDMI和3.5mm耳机接口)相互切换方法
  7. 基于超人视觉启蒙视频——halcon基础1:瓶盖识别
  8. 基于HTML服装商城项目的设计与实现
  9. java 界面编程_JAVA图形界面编程
  10. Opencv学习笔记 图像拼接一全景拼接