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

来源:脚本之家  责任编辑:小易  

使用python做后台服务,提供数据接口用微信小程序提供的前端api和文档写前端页面www.zgxue.com防采集请勿采集本网。

一、先来看看效果

两个都适合。更适合的话,我怕被打,弱弱的说一句php,php7效率高,php就是为了web而生。python偏脚本比较多,python跟php两兄弟咯,php效率高一点咯

在这里插入图片描述

接口请求返回的数据:

逆向微信apk 首先解包微信apk,用dex2jar反编译classes.dex,然后用JD-GUI查看jar源码。当然,能看到的源码都是经过高度混淆的。但是,继承自安卓重要组件(如Activity、Service等)的类名无法被混淆,

在这里插入图片描述

二、官方登录流程图

在github,itchat了解一下

在这里插入图片描述

三、小程序登录流程梳理:

1.微信把一个人删除以后,只要对方未删除对方手机聊天记录,对方还能看见我们之前的聊天记录。2.微信删除好友是单向的行为,删除好友,你仍会在对方好友列表存在,除非对方主动删除。3.删除好友后,对方将

1、小程序端调用wx.login

首先,在终端安装一下itchat包。pip install itchat 安装完成后导入包,再登陆自己的微信。过程中会生产一个登陆二维码,扫码之后即可登陆。登陆成功后,把自己好友的相关信息爬下来。import

2、判断用户是否授权

3、小程序端访问 wx.getUserInfo

4、小程序端js代码:

wx.login({ success: resp => { // 发送 res.code 到后台换取 openId, sessionKey, unionId console.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_keyopenidunionid

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 base64import jsonfrom Crypto.Cipher import AESclass WXBizDataCrypt: def __init__(self, appId, sessionKey): self.appId = appId self.sessionKey = sessionKey def decrypt(self, encryptedData, iv): # base64 decode sessionKey = 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 decrypted def _unpad(self, s): return s[:-ord(s[len(s)-1:])]

8、Flask的/user/wxloginapi代码:

import json,requestsfrom WXBizDataCrypt import WXBizDataCryptfrom 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' # 开发者关于微信小程序的appID appSecret = 'appSecret' # 开发者关于微信小程序的appSecret code = data['platCode'] # 前端POST过来的微信临时登录凭证code encryptedData = 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'] # 得到用户关于当前小程序的OpenID session_key = resData ['session_key'] # 得到用户关于当前小程序的会话密钥session_key pc = 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实现内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

1、产品定位及功能介绍,微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验。2、如果要开发微信小程序,建议找微信认证第三方开发商开发相关应用,比如赢在移动、正品科技等内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python flask 搭建微信小程序后台详解
  • python使用flask操作mysql实现登录功能
  • 使用python的flask框架表单插件flask-wtf实现web登录验证
  • python的flask框架中实现登录用户的个人资料和头像的教程
  • python的flask框架中实现简单的登录功能的教程
  • linux系统下安装三个或者多个tomcat(步骤详细)
  • 搭建tomcat 8源码开发环境的步骤详解
  • tomcat9使用免费的https证书加密网站的方法
  • windows下配置两个或多个tomcat启动的方法
  • windows server利用批处理脚本判断端口启动tomcat的方法
  • win2003下iis6集成一个或多个tomcat的方法
  • tomcat搭建本地服务器的图文教程
  • tomcat容器管理安全的验证方式汇总
  • 同一台服务器(电脑)运行多个tomcat的设置方法步骤
  • win7系统下tomcat7.0配置教程
  • 如何使用Python开发微信小程序
  • 如何使用Python开发微信小程序
  • 有没有适合没有python基础想要用flask写web开发的书籍介绍
  • php和python哪个更适合微信小程序
  • php和python哪个适合开发微信小程序
  • python怎么爬取某个人的微信朋友圈的信息
  • 如何使用python在微信
  • python 能抓去微信的聊天记录吗
  • 如何用 Python 爬自己的微信朋友
  • python能不能做微信开发
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全星外虚拟主机华众虚拟主机linuxwin服务器ftp服务器dns服务器tomcat nginxzabbix云和虚拟化服务器其它首页服务器python flask 搭建微信小程序后台详解python使用flask操作mysql实现登录功能使用python的flask框架表单插件flask-wtf实现web登录验证python的flask框架中实现登录用户的个人资料和头像的教程python的flask框架中实现简单的登录功能的教程linux系统下安装三个或者多个tomcat(步骤详细)搭建tomcat 8源码开发环境的步骤详解tomcat9使用免费的https证书加密网站的方法windows下配置两个或多个tomcat启动的方法windows server利用批处理脚本判断端口启动tomcat的方法win2003下iis6集成一个或多个tomcat的方法tomcat搭建本地服务器的图文教程tomcat容器管理安全的验证方式汇总同一台服务器(电脑)运行多个tomcat的设置方法步骤win7系统下tomcat7.0配置教程tomcat7.0安装配置详细(图文)直接双击启动tomcat中的startup.tomcat中更改网站根目录和默认页在tomcat中部署web项目的操作方法关于tomcat的server.xml里host节如何修改tomcat默认端口号8080的tomcat环境变量详细配置步骤windows下配置两个或多个tomcat启window7下tomcat7.0安装配置方法启动tomcat时 错误: 代理抛出异常详解tomcat如何实现cometlinux下定时切割mongodb数据库日志并删除windows下配置两个或多个tomcat启动的方法同一台服务器(电脑)运行多个tomcat的设置详解关于tomcat切割catalina.out日志的三优化tomcat配置(内存、并发、缓存等方面cemtos 7 linux 安装与卸载 tomcat 7的教tomcat中redirectport的作用对一个tomcat实现多端口、多域名访问的方tomcat 腾讯云主机和微信
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved