1、小程序端调用wx.login

2、判断用户是否授权

3、小程序端访问 wx.getUserInfo

4、小程序端js代码:+

wx.login({success: resp => {// 发送 res.code 到后台换取 openId, sessionKey, unionIdconsole.log(resp);var that = this;// 获取用户信息wx.getSetting({success: res => {if (res.authSetting['scope.userInfo']) {// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框wx.getUserInfo({success: userResult => {var platUserInfoMap = {}platUserInfoMap["encryptedData"] = userResult.encryptedData;platUserInfoMap["iv"] = userResult.iv;wx.request({url: 'http://127.0.0.1:5000/user/wxlogin',data: {platCode: resp.code,platUserInfoMap: platUserInfoMap,},header: {"Content-Type": "application/json"},method: 'POST',dataType:'json',success: function (res) {console.log(res)wx.setStorageSync("userinfo", res.userinfo) //设置本地缓存},fail: function (err) { },//请求失败complete: function () { }//请求完成后执行的函数})}})}}})}})

5、后端服务器访问code2session,通过code2Session这个api接口来获取真正需要的微信用户的登录态 session_key 和 openid 和 unionid

6、后端服务器校验用户信息,对 encryptedData 解密

微信小程序登录后获得session_key后,返回了encryptedData,iv的数据,其中encryptedData解密后包含了用户的信息,解密后的json格式如下:

{"openId": "OPENID","nickName": "NICKNAME","gender": GENDER,"city": "CITY","province": "PROVINCE","country": "COUNTRY","avatarUrl": "AVATARURL","unionId": "UNIONID","watermark":{"appid":"APPID","timestamp":TIMESTAMP}
}

7、新建解密文件——WXBizDataCrypt.py

from Crypto.Cipher import AES 这边一般会遇到 ModuleNotFoundError:No module named "Crypto" 错误

(1)执行 pip3 install pycryptodome

(2)如果还是提示没有该模块,那就虚拟环境目录 Lib—-site-package 中查看是否有 Crypto文件夹,这时你应该看到有 crypto 文件夹,将其重命名为 Crypto 即可

import base64
import json
from Crypto.Cipher import AESclass WXBizDataCrypt:def __init__(self, appId, sessionKey):self.appId = appIdself.sessionKey = sessionKeydef decrypt(self, encryptedData, iv):# base64 decodesessionKey = base64.b64decode(self.sessionKey)encryptedData = base64.b64decode(encryptedData)iv = base64.b64decode(iv)cipher = AES.new(sessionKey, AES.MODE_CBC, iv)decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData)))if decrypted['watermark']['appid'] != self.appId:raise Exception('Invalid Buffer')return decrypteddef _unpad(self, s):return s[:-ord(s[len(s)-1:])]

8、Flask的 /user/wxlogin api代码:

import json,requests
from WXBizDataCrypt import WXBizDataCrypt
from flask import Flask@app.route('/user/wxlogin', methods=['GET','POST'])
def user_wxlogin():data = json.loads(request.get_data().decode('utf-8')) # 将前端Json数据转为字典appID = 'appID' # 开发者关于微信小程序的appIDappSecret = 'appSecret' # 开发者关于微信小程序的appSecretcode = data['platCode'] # 前端POST过来的微信临时登录凭证codeencryptedData = data['platUserInfoMap']['encryptedData']iv = data['platUserInfoMap']['iv']req_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请求resData = response_data.json()openid = resData ['openid'] # 得到用户关于当前小程序的OpenIDsession_key = resData ['session_key'] # 得到用户关于当前小程序的会话密钥session_keypc = WXBizDataCrypt(appID, session_key) #对用户信息进行解密userinfo = pc.decrypt(encryptedData, iv) #获得用户信息print(userinfo)'''下面部分是通过判断数据库中用户是否存在来确定添加或返回自定义登录态(若用户不存在则添加;若用户存在,返回用户信息)--------略略略略略略略略略-------------这部分我就省略啦,数据库中对用户进行操作'''return json.dumps
({
"code": 200, "msg": "登录成功","userinfo":userinfo}, indent=4, sort_keys=True, default=str, ensure_ascii=False)

总结

到此这篇关于Python Flask微信小程序登录详解及登录api实现的文章就介绍到这了,更多相关Python Flask微信小程序登录详解及登录api实现内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间:2020-06-05

Python的Flask框架中实现登录用户的个人资料和头像的教程

用户资料页面 在用户资料页面,基本上没有什么特别要强调和介绍的新概念.只需要创建一个含有HTML的新视图函数模板页面即可. 下面是视图函数(项目目录/views.py): @app.route('/user/<nickname>') @login_required def user(nickname): user = User.query.filter_by(nickname = nickname).first() if user == None: flash('不存在用户:' + nickn

Python Flask 搭建微信小程序后台详解

前言: 近期需要开发一个打分的微信小程序,涉及到与后台服务器的数据交互,因为业务逻辑相对简单,故选择Python的轻量化web框架Flask来搭建后台程序.因为是初次接触小程序,经过一番摸索和尝试,个人觉得的微信小程序与后台的交互有点像ajax,所以有ajax开发经验的同学开发小程序应该很容易上手,因为本文着重讲解后台程序的搭建,所以,微信小程序的前端开发将一笔带过,有兴趣学习小程序前端语言的同学可移步网易云课堂的一套快速入门课程<轻松玩转微信小程序>. 分三步讲解微信小程序与Python后台

使用Python的Flask框架表单插件Flask-WTF实现Web登录验证

表单是让用户与我们的网页应用程序交互的基本元素.Flask 本身并不会帮助我们处理表单,但是 Flask-WTF 扩展让我们在我们的 Flask 应用程序中使用流行的 WTForms 包.这个包使得定义表单和处理提交容易一些. Flask-WTF 我们想要使用 Flask-WTF 做的第一件事情(在安装它以后,GitHub项目页
:https://github.com/lepture/flask-wtf )就是在 myapp.forms 包中定义一个表单. # ourapp/forms.py fr

Python的Flask框架中实现简单的登录功能的教程

回顾 在前面的系列章节中,我们创建了一个数据库并且学着用用户和邮件来填充,但是到现在我们还没能够植入到我们的程序中. 两章之前,我们已经看到怎么去创建网络表单并且留下了一个实现完全的登陆表单. 在这篇文章中,我们将基于我门所学的网络表单和数据库来构建并实现我们自己的用户登录系统.教程的最后我们小程序会实现新用户注册,登陆和退出的功能. 为了能跟上这章节,你需要前一章节最后部分,我们留下的微博程序.请确保你的程序已经正确安装和运行. 在前面的章节,我们开始配置我们将要用到的Flask扩展.为了登

python使用Flask操作mysql实现登录功能

用到的一些知识点
:Flask-SQLAlchemy.Flask-Login.Flask-WTF.PyMySQL 这里通过一个完整的登录实例来介绍,程序已经成功运行,在未登录时拦截了success.html页面跳转到登录页面,登录成功后才能访问success. 以下是项目的整体结构图: 首先是配置信息,配置了数据库连接等基本的信息,config.py DEBUG = True SQLALCHEMY_ECHO = False SQLALCHEMY_DATABASE_URI = 'mysql+pymy

python实现网站用户名密码自动登录功能

一.概述 公司需要通过网页用户认证登录实现上网,网络设备判断当前帐号12小时没有没上网将会自动断开帐号上网,每天早上上班第一件事就是打开用户认证网页输入. 用户名与密码,有时候要家里通过teamview远程控制软件连接公司电脑,想让公司电脑24小时在线,最后通过python实现了自动登录. 代码: #_*_ coding:utf-8 _*_ import requests,time s=requests.session() data = [ ('opr', 'pwdLogin'), ('user

在Python程序中操作MySQL的基本方法

Python操作Mysql 最近在学习python,这种脚本语言毫无疑问的会跟数据库产生关联,因此这里介绍一下如何使用python操作mysql数据库.我python也是零基础学起,所以本篇博客针对的是python初学者,大牛可以选择绕道. 另外,本篇基于的环境是Ubuntu13.10,使用的python版本是2.7.5. MYSQL数据库 MYSQL是一个全球领先的开源数据库管理系统.它是一个支持多用户.多线程的数据库管理系统,与Apache.PHP.Linux共同组成LAMP平台,在web应

python简单实现操作Mysql数据库

用python编写数据库的代码很方便,但是如果不想自己写sql语句,其实还有更多的讨巧办法.使用webpy的db库就是不错的一个选择.当然为了使用webpy的db,之前你还需要安装MySQLdb,其他的就不需要做什么了. 1.安装MySQLdb库 sudo apt-get install python-MySQLdb 2.安装webpy sudo apt-get install python-webpy 3.连接数据库 import web db = web.database(dbn='mysq

python使用SQLAlchemy操作MySQL

SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具,使用MIT许可证发行.SQLAlchemy首次发行于2006年2月,并迅速地在Python社区中最广泛使用的ORM工具之一,不亚于Django的ORM框架. 本文将介绍如何使用SQLAlchemy操作MySQL,完成基础的表创建,表格数据的新增.查询.修改.删除(CRUD)等操作. 首先我们需要确认当前的Python环境下已经安装sqlalchemy和pymysql模块. 新建表格 我们使

Java+mysql用户注册登录功能

最近刚刚开始学习mysql,所以就写了这个很基本的用户注册登录的功能来练练手.虽然这个很简单,但是我还是看到了自己学习的进步,很开心.哈哈哈. 这里要注意数据表的建立: 直接上代码吧,里面注释很详细了. package client; import java.sql.*; import java.util.*; public class Client { /** * 用以实现用户的注册和登录 */ private static String username;//用户登录注册的姓名 privat

Python的Flask框架中实现分页功能的教程

Blog Posts的提交 让我们从简单的开始.首页上必须有一张用户提交新的post的表单. 首先我们定义一个单域表单对象(fileapp/forms.py): class PostForm(Form): post = TextField('post', validators = [Required()]) 下面,我们把这个表单添加到template中(
fileapp/templates/index.html): <!-- extend base layout --> {% extends &

flask 框架操作MySQL数据库简单示例

本文实例讲述了flask 框架操作MySQL数据库.分享给大家供大家参考,具体如下: 一.创建数据库表格 """ Created on 19-10-8 @requirement:Anaconda 4.3.0 (64-bit) Python3.6 @description:创建表格 """ import pymysql server = '127.0.0.1' user = 'root' password = 'password' # 连接数据库

Python操作MySQL数据库的三种方法总结

1. MySQLdb 的使用 (1) 什么是MySQLdb? MySQLdb 是用于 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的. (2) 源码安装 MySQLdb: 
https://pypi.python.org/pypi/MySQL-python $ tar zxvf MySQL-python-*.tar.gz $ cd MySQL-python-* $ python setup.py buil

Python Flask微信小程序登录流程及登录api实现代码相关推荐

  1. python flask 微信小程序_python-flask微信小程序搭建

    创建虚拟环境,导入flask项目所需要的包 创建项目文件夹,在项目文件夹下创建manage.py文件,配置manage.py文件 导入manage所需要的包 创建congig.py文件,配置confi ...

  2. Python Flask 微信小程序点餐系统(五):管理员后台菜品模块

    菜品模块架构 菜品相关数据表设计 菜品分类列表 添加 / 编辑 / 删除 / 恢复菜品分类 菜品列表 添加 / 编辑 / 删除 / 恢复菜品 菜品库存变更历史 表结构设计 CREATE TABLE ` ...

  3. 天使童装微信小程序支付流程:

    (商城余额支付,优惠支付,积分抵消,微信支付) 前台后台 系统后台 微信后台 :三部分 流程:点击下单按钮,请求下单支付,后端返回支付参数,收到5个参数之后输入密码确认用户支付 输入密码是跟小程序 小 ...

  4. python开发微信小程序-微信小程序开发:python+sanic 实现小程序登录注册

    开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...

  5. python写微信小程序源码示例_python实现微信小程序用户登录、模板推送

    python实现微信小程序用户登录.模板推送 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  python实现微信小程序用户登录.模板推送.txt ] (友情提示 ...

  6. 微信小程序开发之——用户登录-登录流程(1)

    一 概述 新建微信小程序自带用户登录简化 小程序登录流程时序 二 新建微信小程序自带用户登录简化 新建的微信小程序默认有用户登录功能,将多余功能去除后,简化如下 2.1 index.wxml < ...

  7. python开发微信小程序-Python 开发者的微信小程序开发实践

    导读 在知乎上,有人提问"如何使用 Python 开发微信小程序". 其实微信小程序作为一个前端的机制,Python 并不能插上边.只不过可以作为后端接口为微信小程序提供数据服务而 ...

  8. 小程序发布上线流程_微信小程序发布流程:公司、个人如何注册小程序

    如今制作微信小程序已经是非常简单的事了,即使是完全不懂技术的小白,也能利用小程序制作工具快速生成小程序,基本上选一个模板就能快速把页面搭建好. 不过,虽然小程序页面搭建很简单,但还有不少人不知道页面搭 ...

  9. 【愚公系列】2022年09月 微信小程序-微信小程序实现网页一键登录功能

    文章目录 前言 一.微信小程序实现网页一键登录功能 1.旧版登录方法 2.新版登录方法 二.相关第三方包源码 前言 如果微信小程序要获取微信登录的用户信息,需要拿到code去后台换取用户信息,具体步骤 ...

最新文章

  1. PHP命名空间的使用规则
  2. python零基础怎么学-零基础的小白怎么学python?
  3. Django MPTT —— 概述
  4. mysql的安装备份恢复_安装使用Percona XtraBackup来备份恢复MySQL的教程
  5. [单刷APUE系列]第十一章——线程[1]
  6. 用Net::Telnet来弥补System.Net.Sockets的不足
  7. 软件工程(2018)结对编程第一次作业
  8. 只能建立两个虚拟服务器,创建两个虚拟主机
  9. html页面ajax提交数据,ajax请求提交form表单
  10. 访问webservice,导入xml至本地数据集
  11. plc控制电机实验报告_基于西门子PLC电动机正反转互锁控制实验报告
  12. Matlab批量修改文件格式
  13. 基于华三交换机,限制其他网段的IP访问
  14. 【C/C++】共用体(union)
  15. 爱情的诗·11~15节
  16. pom.springmvc.psring-contect自用常用文件配置
  17. word中mathtype公式编辑
  18. 怎么训练神经网络模型,神经网络模型训练过程
  19. 解决MobaXtem中使用vim不能复制到Windows
  20. GD GD5F4GQ6UEYIGR 存储IC

热门文章

  1. 在logopond中看到的优秀设计随想
  2. yocto(七)——添加layer、添加内核模块、修改源码、制作补丁
  3. 优秀的GitHub开源项目介绍
  4. 由粗模生细模 精灵4 RTK结合PhotoScan航线规划生成精细化模型
  5. php代码缩进,PHPStorm PHP代码缩进
  6. 2022年技术人365篇写作计划-想持续成长需要关注哪些能力
  7. android中的深度学习——快速风格迁移
  8. 代码分享|静息态频域各指标的计算,建议收藏
  9. c语言编程求无向图的连通分支,无向图的连通分支
  10. 【珍藏】高手写SCI常用经典词和常用句型