微信小程序后端用python_Python开发微信小程序后端开发小坑
本文简单说下微信登录以及获取并解密比如手机号这样的数据。
微信登录
首先自行阅读小程序开发文档,构造请求。基本上前端给个jscode,后台就能向微信服务器发请求了,大概是这样:
url = "https://api.weixin.qq.com/sns/jscode2session?appid={}&secret={}&js_code={}&grant_type=authorization_code".format(
self.appid, self.secret, jscode)
rc = requests.get(url)
result = rc.json()
errcode = result.get('errcode')
if errcode and errcode != 0:
self.logger.error('微信登录错误: %s' % traceback.format_exc())
openid = result['openid']
session_key = result['session_key']
假设我们有个内置的用户表。那么因为openid与微信号是唯一的,可以用来入库,与用户表绑定(第一次当然得提供用户名密码),下次就直接用openid到用户库里查一下,有的话就免登,构造一个含有有效期的token返回给前端。
前端可以把这个token本地化存储,如果没过期就直接用。如果过期了,就拿openid重新比对。
session_key也入库,用于解密。
获取并解密数据
image.png
下载里面有示例代码,还挺方便的。里面提到了一个数据签名校验,比如获取用户手机号,用户授权后,前端会返回两个字段encryptedData和iv。
根据用户id从库里拿出sessionKey,一起解密下:
def unpad(s):
return s[:-ord(s[len(s)-1:])]
# base64 decode
sessionKey = base64.b64decode(sessionKey)
encryptedData = base64.b64decode(encryptedData)
iv = base64.b64decode(iv)
cipher = AES.new(sessionKey, AES.MODE_CBC, iv)
decrypted = json.loads(unpad(cipher.decrypt(encryptedData)))
decrypted就是最终的数据,有手机号什么的。当然还可以加个判断,如果decrypted['watermark']['appid'] != self.appid,那么水印不对。
坑
说的坑主要是库,要导入:
from Crypto.Cipher import AES
这个库不是自带的,需要安装,比较坑的是,一般人都会这么安装:pip install Crypto或者pip install crypto,都不对,或者都不够,需要安装这个:
pip install pycrypto
本文建议先安装pycrypto,然后去安装目录看看,如果是这样:
image.png
且crypto目录下有Cipher目录,那就接近成功了。接下来还需要把crypto目录改成Crypto,就大功告成!
至于安装目录,Windows在C:\Users\你的用户名\AppData\Local\Continuum\anaconda3\envs\你得环境名\Lib\site-packages,Mac在/Users/你的用户名/anaconda3/envs/你的环境名/lib/python3.7/site-packages,自己试试找找。
其实还没完,在Windows下安装pycrypto也有坑。会各种编译不过去,报错:
image.png
然后就去微软找,后来找了这个下载链接,http://go.microsoft.com/fwlink/?LinkId=691126,下载,默认,安装时还挺慢的,十几分钟,安装完成后,继续安装pycrypto,又报错,
image.png
网上有一些解决方法,但是路径跟这个版本对不上,后来采纳了这种方法,安装前先set一个变量:
set CL=/FI"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\include\\stdint.h"
这里的路径请自行确认,确认文件在。
然后再pip install pycrypto,终于成功了!记得去安装目录改下目录名。
参考
微信小程序后端用python_Python开发微信小程序后端开发小坑相关推荐
- 微信小程序开发-微信支付功能【WxMaService 获取openid,WxPayService建微信订单,接收微信支付异步通知回调方法,附有完整前后端代码】
前提:对小程序开发有一定的基础:小程序已发布使用,已开通微信支付,关联商户号. 微信小程序平台:小程序平台 微信开发者文档:开发者文档 微信小程序支付API 地址:微信支付文档地址 微信支付平台:微信 ...
- 用 Django 开发微信小程序后端实现用户登录
本文将介绍采用 Django 开发微信小程序后端,通过将用户模块进行重构,并采用JWT来进行用户认证,来解决以下问题: 微信小程序不支持 Cookie,因此不能采用 Django 默认的 Sessio ...
- 关于开发微信小程序后端linux使用xampp配置https
关于开发微信小程序后端linux使用xampp配置https 背景 由于最近开发微信小程序,前后端交互需要使用https协议,故需要配置https服务 服务器环境 服务器系统 ubuntu 环境 xa ...
- 如何开发微信小程序(全解过程包括前端、后端)
微信小程序开发基础知识: (1)手机的屏幕宽度的最大为750rpx(数据与rpx连写): (2)ctrl+s 保存即可运行新写的代码: (3)新建项目的过程: 1. 创建时不要选择云开发: 2. 生成 ...
- Django之开发微信小程序后端-微信小程序篇①
开始上班~~~ 文章目录 第1章.课程介绍 三类技术要点 小程序技术要点 Django技术要点 服务端技术要点 第2章 小程序开发入门 2-2 小程序开发的准备工作 小程序开发规范 2-3 项目工程的 ...
- python开发微信小程序-微信小程序开发:python+sanic 实现小程序登录注册
开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + sanic + 微信小程序实现用户快速注册登录全栈方案. 微信小程 ...
- python开发微信小程序-Python 开发者的微信小程序开发实践
导读 在知乎上,有人提问"如何使用 Python 开发微信小程序". 其实微信小程序作为一个前端的机制,Python 并不能插上边.只不过可以作为后端接口为微信小程序提供数据服务而 ...
- 使用牛刀云开发微信小程序(问题集锦)
前不久,起步科技正式推出牛刀云1.0,我想这也应该是许多WeX5的忠诚追随者(我也算是其中之一吧)期望的结果了.使用牛刀云开发微信小程序,能够实现使用类似于WeX5的所见即所得组件积木搭建方式构建前端 ...
- Mpvue+koa开发微信小程序——腾讯云开发环境的搭建及部署实现真机测试
为什么写这篇文章? 之前写过一篇文章:微信小程序开发错误:LoginError {type: "ERR_WX_GET_USER_INFO"}解决方法 有的伙伴在这篇文章中评论为什么 ...
- 小程序和vue语法对比_React语法开发微信小程序 Demo
前言 从16年微信小程序内测的时候至今,微信小程序用实践证明了自己的创新和价值,微信小程序的规则也在社区的影响下变得更加完善. 但是不得不说,用惯了VSCode,官方的开发工具确实不怎么好用.之前没有 ...
最新文章
- winform能连MySQL吗_c# winform中怎么连接mysql
- 【离散数学中的数据结构与算法】六 排列与组合二
- 我心目中的Asp.net核心对象
- 基础算法:与、或、异或运算
- html table 显示最后一条,漂亮CSS表格(Table),最后一行是汇总行【实例】
- java工具类(六)根据经纬度计算距离
- 禁用电子邮件服务器,启用或禁用对邮箱中的邮箱的 POP3 或 IMAP4 Exchange Server
- 智能管家---1.项目搭建
- Django之DRF自定义action
- 史上最全的Java进阶书籍推荐
- 视频播放库Vitamio的使用以及功能扩展
- Linux报错:tar: Error Is Not Recoverable: Exiting Now
- 周边pd是什么意思_饭圈说的pd意思 饭圈pb是什么意思的缩写
- Scratch模拟题(二级)_1
- mysql 聚簇索引 和聚簇索引 (二级索引)的 那些事
- 02-leveldb入门
- 利用SPSS可视化分箱轻松给数据进行等分分组
- ChemOffice Suite 2018 18.1.2.18
- 敞开心扉,来聊聊跨域方式吧!
- Job for network.service failed because the control process exited with error code. 的解决办法
热门文章
- python rtf读取_如何使用Python读取RTF文件,python,格式,的
- 网站性能并发测试工具
- 微信公众号与服务器ip,微信公众号服务器IP网段与实际IP不一致?无法通过微信公众号推送消息到自己的服务器...
- 【机器视觉】线阵相机模型说明以及使用HALCON标定助手对线阵相机进行标定
- 74ls系列中文资料功能介绍
- ceshi wenz
- 火星坐标-84坐标-百度地图坐标相互转换
- 线性链表 — 单链表
- 耦合矩阵 matlab,耦合矩阵变换(化简)的问题
- php银联支付接口 demo,php版银联支付接口开发简明教程