欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年11月19日 16:00:14   作者:如何好聽  
這篇文章主要介紹了python獲取微信小程序手機號并綁定遇到的坑,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下

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

流程介紹

官方流程圖

小程序使用方法

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

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

返回參數說明

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

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

后臺解密

在解密以前需要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

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

返回數據格式

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

總結

以上所述是小編給大家介紹的python獲取微信小程序手機號并綁定遇到的坑,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • 在Django的視圖中使用form對象的方法

    在Django的視圖中使用form對象的方法

    這篇文章主要介紹了在Django的視圖中使用form對象的方法,Django是Python豐富多彩的開發(fā)框架中最具有人氣的一個,需要的朋友可以參考下
    2015-07-07
  • 使用python去除PDF簡單水印的示例

    使用python去除PDF簡單水印的示例

    最近在下載PDF書籍的時候,發(fā)現有些PDF有水印,于是就尋思著能不能用Python去除這些討厭的水印,PDF主要有兩種類型,一種是文字版,另外一種就是掃描版(圖片),這個去除水印主要就是針對掃描版的PDF,所以本文介紹了如何使用python去除PDF簡單水印,需要的朋友可以參考下
    2024-03-03
  • Python中交換兩個元素的實現方法

    Python中交換兩個元素的實現方法

    今天小編就為大家分享一篇Python中交換兩個元素的實現方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • python實現低通濾波器代碼

    python實現低通濾波器代碼

    今天小編就為大家分享一篇python實現低通濾波器代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Django視圖、傳參和forms驗證操作

    Django視圖、傳參和forms驗證操作

    這篇文章主要介紹了Django視圖、傳參和forms驗證操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • 利用Pandas實現對數據進行移動計算

    利用Pandas實現對數據進行移動計算

    這篇文章主要為大家詳細介紹了如何利用Pandas實現對數據進行移動計算,文中的示例代碼講解詳細,對我們了解Pandas有一定幫助,需要的可以參考一下
    2022-07-07
  • 使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼

    使用qt quick-ListView仿微信好友列表和聊天列表的示例代碼

    本文以微信好友列表為例給大家學習listview的相關知識,通過實例demo給大家詳解qt quick-ListView仿微信好友列表和聊天列表的實現方法,需要的朋友參考下吧
    2021-06-06
  • 測試、預發(fā)布后用python檢測網頁是否有日常鏈接

    測試、預發(fā)布后用python檢測網頁是否有日常鏈接

    難免會碰到秀逗了把測試的鏈接發(fā)布到線上的情況,一般這種都是通過一些測試的檢查工具來檢查鏈接來規(guī)避風險的,下面為大家簡述下大概的實現思路
    2014-06-06
  • python流水線框架pypeln的安裝使用教程

    python流水線框架pypeln的安裝使用教程

    這篇文章主要介紹了python流水線框架pypeln的安裝使用教程,通過安裝pip install pypeln,基本元素在文中給大家介紹過,需要的朋友可以參考下
    2021-05-05
  • python 文件和路徑操作函數小結

    python 文件和路徑操作函數小結

    python 文件和路徑操作函數小結,需要開發(fā)的朋友可以參考下。
    2009-11-11

最新評論