微信小程序獲取微信綁定的手機號


  怎么獲取微信綁定手機號呢?我們授權登錄的時候,我們只能獲取微信登錄人員的頭像,昵稱,性別之類的,而手機號需要二次授權才可以,那么獲取手機號都需要哪些條件呢?來看官方文檔

  

獲取手機號

獲取微信用戶綁定的手機號,需先調用wx.login接口。

因為需要用戶主動觸發才能發起獲取手機號接口,所以該功能不由 API 來調用,需用 button 組件的點擊來觸發。

注意:目前該接口針對非個人開發者,且完成了認證的小程序開放(不包含海外主體)。需謹慎使用,若用戶舉報較多或被發現在不必要場景下使用,微信有權永久回收該小程序的該接口權限。

使用方法

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

注意

在回調中調用 wx.login 登錄,可能會刷新登錄態。此時服務器使用 code 換取的 sessionKey 不是加密時使用的 sessionKey,導致解密失敗。建議開發者提前進行 login;或者在回調中先使用 checkSession 進行登錄態檢查,避免 login 刷新登錄態。

代碼示例

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"></button> 
Page({ getPhoneNumber (e) { console.log(e.detail.errMsg) console.log(e.detail.iv) console.log(e.detail.encryptedData) } }) 

返回參數說明

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

獲取得到的開放數據為以下 json 結構:

{ "phoneNumber": "13580006666", "purePhoneNumber": "13580006666", "countryCode": "86", "watermark": { "appid":"APPID", "timestamp": TIMESTAMP } } 
參數 類型 說明
phoneNumber String 用戶綁定的手機號(國外手機號會有區號)
purePhoneNumber String 沒有區號的手機號
countryCode String 區號

給了參數,給了返回值,但是你返回值是加密的。。。。emmm你倒是說怎么解密啊!給個解密的自己去找吧。。。

然后他解密文檔提供了集中語言的解密dome,大家有興趣可以自己看一下,我貼下我PHP的代碼,別看dome三個文件,核心代碼就這五行,只需要三個參數 encryptedData加密的密文,iv加密算法起始值,sessionkey用戶的sessionkey,就可以了.

public  function d2($encryptedData,$iv,$sessionkey){
        $aesKey=base64_decode($sessionkey);
        $aesIV=base64_decode($iv);
        $aesCipher=base64_decode($encryptedData);
        $result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
        $dataObj=json_decode( $result );
        

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM