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

首頁 > 編程 > Python > 正文

python獲取微信小程序手機(jī)號(hào)并綁定遇到的坑

2020-01-04 14:02:16
字體:
供稿:網(wǎng)友

最近在做小程序開發(fā),在其中也遇到了很多的坑,獲取小程序的手機(jī)號(hào)綁定就遇到了一個(gè)很傻的坑。

流程介紹

python,微信小程序,手機(jī)號(hào),綁定

官方流程圖

python,微信小程序,手機(jī)號(hào),綁定

小程序使用方法

需要將 <button> 組件 open-type 的值設(shè)置為 getPhoneNumber,當(dāng)用戶點(diǎn)擊并同意之后,可以通過 bindgetphonenumber 事件回調(diào)獲取到微信服務(wù)器返回的加密數(shù)據(jù), 然后在第三方服務(wù)端結(jié)合 session_key 以及 app_id 進(jìn)行解密獲取手機(jī)號(hào)。

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

返回參數(shù)說明

 

參數(shù) 類型 說明
encryptedData String 包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù),詳細(xì)見加密數(shù)據(jù)解密算法
iv String 加密算法的初始向量,詳細(xì)見加密數(shù)據(jù)解密算法

 

接受到這些參數(shù)以后小程序把code,encryptedData,iv發(fā)給后臺(tái),然后后臺(tái)解密

后臺(tái)解密

在解密以前需要session_key進(jìn)行配合解密,所以首先通過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以后就可以進(jìn)行解密了,python2實(shí)現(xiàn)代碼如下:

 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:])]

調(diào)用傳參

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

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

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

返回?cái)?shù)據(jù)格式

{  "phoneNumber": "13580006666",   "purePhoneNumber": "13580006666",   "countryCode": "86",  "watermark":  {    "appid":"APPID",    "timestamp":TIMESTAMP  }}

總結(jié)

以上所述是小編給大家介紹的python獲取微信小程序手機(jī)號(hào)并綁定遇到的坑,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請移步到python教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 化州市| 丽水市| 称多县| 五莲县| 海阳市| 麟游县| 湖州市| 运城市| 曲靖市| 沽源县| 南昌市| 宜丰县| 木兰县| 娱乐| 台山市| 赤峰市| 乐陵市| 左云县| 建昌县| 康平县| 加查县| 金山区| 韩城市| 黄梅县| 沙湾县| 义马市| 迁安市| 吴堡县| 浦江县| 道孚县| 岱山县| 阳西县| 泸定县| 西安市| 南溪县| 乡宁县| 文水县| 安福县| 丹江口市| 秦皇岛市| 英超|