(getphonenumber) 微信小程序用户授权获取手机号(getPhoneNumber)
微信小程序用户授权获取手机号的主要原理是通过微信提供的获取用户手机号API,并且该手机号的信息都是已经经过微信端的加密处理的。
下面给您介绍一下步骤:
一、在微信小程序前端页面进行配置:
1.首先,您需要在需要绑定手机号的那个按钮上绑定一个点击事件,一般情况下,官方是建议使用<button>
标签,并设置open-type="getPhoneNumber"
,它可以让用户授权手机号。
例如:
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">绑定手机号</button>
2.然后,你需要在上述的绑定的点击事件getPhoneNumber
函数中,获取微信返回的加密数据和初始化向量数据。
例如:
getPhoneNumber(e) {
let ency = e.detail.encryptedData;
let iv = e.detail.iv;
let sessionk = wx.getStorageSync('session_key');
if( iv == null || iv == '' ){
wx.showToast({
title: '未能获取到手机号,请重试',
icon: 'none',
duration: 2000
})
return;
} else{
// 执行解密,获取手机号
}
}
3.注意,解密手机号时,需要的session_key
,一般是在用户登录小程序时获取,并且存储在storage中。
二、后端解密手机号
1.首先,您需要准备好需要解密的密文(显然包括了手机号加密信息和初始化向量),密钥(session_key
),以及加密算法(实际情况下,此处为AES)。
2.然后,根据所选择的语言,选择合适的库或工具进行解密。
例如,假设您使用php进行开发:
public function decodeInfo($encryptedData, $iv, $sessionKey)
{
// AES解密
$aesIV = base64_decode($iv);
$aesKey = base64_decode($sessionKey);
$aesCipher = base64_decode($encryptedData);
$result = openssl_decrypt($aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);
$dataObj = json_decode($result);
if($dataObj == NULL) {
return NULL;
}
if($dataObj->watermark->appid != $appid) {
return NULL;
}
$phoneNumber = $dataObj->phoneNumber; // 解密得到手机号
return $phoneNumber;
}
以上步骤就可以完成微信小程序用户授权获取手机号的过程。
总结:获取微信小程序用户手机号的主要过程可以分为前端获取授权并发送加密信息到后端、后端解密获取手机号两大步骤。这个过程要保证数据的安全性和保密性,所以在操作过程中要注意数据的保存与传输过程。
(android navigation) Android中的导航navigation的使用详细步骤 使用 Navigation 组件简化 Android 应用导航逻辑 全网首发(图文详解1)
(gpu z中文版下载) 显卡识别工具 TechPowerUp GPU-Z v2.59.0 中文绿色免费单文件版 TechPowerUp GPUZ v2.59.0 使用指南 全网首发(图文详解1)