国产探花免费观看_亚洲丰满少妇自慰呻吟_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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屯门区| 南郑县| 和平区| 衡山县| 保山市| 泗水县| 崇礼县| 四子王旗| 板桥市| 阿合奇县| 宝清县| 连城县| 牡丹江市| 弋阳县| 上虞市| 休宁县| 张家口市| 探索| 河池市| 洛宁县| 绥江县| 读书| 新密市| 南岸区| 富蕴县| 红桥区| 曲阜市| 甘洛县| 岑巩县| 普格县| 汕头市| 景宁| 双峰县| 报价| 安徽省| 乌海市| 临湘市| 萨嘎县| 通道| 玉门市| 称多县|