WeChat アプレットがユーザーの携帯電話番号を取得するための安全で正しい方法は、取得した iv およびその他の情報をバックエンドに渡し、バックエンドで復号化し、フロントエンドに戻るためのインターフェイスを提供することです。
しかし、より一般的なバックエンドや怠惰なバックエンドに遭遇した場合、フロントエンドは自分で電話番号の解読を完了しようとすることもできます.
1. 承認済みの携帯電話番号コンポーネント ボタンを使用する
<view class="button">
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号</button>
</view>
2. RdWXBizDataCrypt 復号化ファイルをダウンロードする
https://download.csdn.net/download/qq_35946021/87123755 無料ダウンロード
3. 復号化する必要があるファイルを参照します
var WXBizDataCrypt = require('../../utils/RdWXBizDataCrypt');
4. 最初にログイン インターフェイスを使用し、次にバックエンドから与えられた session_key を取得します
login(){
wx.login({
success: (res) => {
console.log(res)
api.getOpenidAction({
js_code:res.code
}).then(re=>{
console.log(re)
this.setData({
openid:re.Data.openid,
code:res.code,
session_key:re.Data.session_key
})
})
}
})
},
5. 次に、携帯電話番号コンポーネントを使用して、encryptedData とパラメーターの iv値を渡します。
キーコード:
WXBizDataCrypt オブジェクトを新規作成し、APPID と session_key を渡します
次に、decryptData 復号化メソッドを使用し、パラメータ encryptedData および iv を渡します。
getPhoneNumber (e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv)
console.log(e)
var pc = new WXBizDataCrypt("wxexxxxxxxxxxxxx6", this.data.session_key)
var data = pc.decryptData(e.detail.encryptedData , e.detail.iv)
console.log('解密后 data: ', data)
},
コンソールは暗号化されたデータを出力し、それを使用できます