Python Flask微信小程序登錄流程及登錄api實現代碼_Tomcat

來源:腳本之家  責任編輯:小易  

使用python做后臺服務,提供數據接口用微信小程序提供的前端api和文檔寫前端頁面www.anxorj.tw防采集請勿采集本網。

一、先來看看效果

兩個都適合。更適合的話,我怕被打,弱弱的說一句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 [email protected]('/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.anxorj.tw請勿采集。


  • 本文相關:
  • 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.anxorj.tw All Rights Reserved
    陕西快乐10分下载