国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python獲取微信小程序手機號并綁定遇到的坑

2020-02-15 23:44:01
字體:
來源:轉載
供稿:網友

最近在做小程序開發,在其中也遇到了很多的坑,獲取小程序的手機號并綁定就遇到了一個很傻的坑。

流程介紹

官方流程圖

小程序使用方法

需要將 <button> 組件 open-type 的值設置為 getPhoneNumber,當用戶點擊并同意之后,可以通過 bindgetphonenumber 事件回調獲取到微信服務器返回的加密數據, 然后在第三方服務端結合 session_key 以及 app_id 進行解密獲取手機號。

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"> </button>

返回參數說明

參數 類型 說明
encryptedData String 包括敏感數據在內的完整用戶信息的加密數據,詳細見加密數據解密算法
iv String 加密算法的初始向量,詳細見加密數據解密算法

接受到這些參數以后小程序把code,encryptedData,iv發給后臺,然后后臺解密

后臺解密

在解密以前需要session_key進行配合解密,所以首先通過code獲取session_key

 # 獲取openid,session_key # Appid為小程序id  openid_url = "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code" % (    APP_ID, APP_KEY, code  )  req = requests.get(openid_url)  rep = req.json()  session_key = rep.get("session_key")

在得到session_key,encryptedData,iv以后就可以進行解密了,python2實現代碼如下:

 import base64 import json from Crypto.Cipher import AES class 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:])]

調用傳參

# APP_ID為小程序id不是openid!!!pc = wx_jm(APP_ID, session_key)res = pc.decrypt(encryptedData, iv)

參數詳情參照微信官方文檔https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html

微信官方提供了多種編程語言的示例代碼點擊下載

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五峰| 明光市| 景宁| 从化市| 利辛县| 平定县| 盐城市| 民丰县| 荃湾区| 平舆县| 隆昌县| 同德县| 渭源县| 大石桥市| 陆良县| 韩城市| 宁南县| 连平县| 垫江县| 高唐县| 疏勒县| 丰镇市| 古浪县| 陆丰市| 平安县| 集贤县| 开远市| 武邑县| 临澧县| 且末县| 贡觉县| 沙雅县| 黄冈市| 佛冈县| 南郑县| 蒙城县| 淅川县| 东乌珠穆沁旗| 英山县| 康乐县| 台中市|