1. 背景介绍
随着小程序的快速发展,越来越多的企业和开发者开始关注和使用小程序。小程序是一个轻便、高效的应用程序,可以在微信内部运行,给用户提供更便捷、更丰富的服务体验。在小程序中,获取用户的手机号是相当常见的需求,例如在用户注册、忘记密码、支付等场景中都需要获取用户的手机号。
2. 小程序获取手机号的方式
在小程序中,我们可以通过微信官方提供的API来获取用户的手机号码,具体方式如下:
2.1 获取用户手机号的API
从微信登录态中获取用户手机,我们需要用到微信提供的js接口,具体流程如下:
在要获取用户手机号的页面中,先调用微信提供的js接口wx.login获取用户的登录凭证code
wx.login({
success: res => {
if (res.code) {
// 获取到用户凭证之后,再通过wx.request发起接口请求
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: '你的小程序APPID',
secret: '你的小程序APPSECRET',
js_code: res.code,
grant_type: 'authorization_code'
},
success: res => {
// 在后端获取到session_key和openid后生成3rd_session,并返回给小程序
let session_key = res.data.session_key;
let openid = res.data.openid;
let unionid = res.data.unionid;
let expires_in = new Date().getTime() + 7 * 24 * 60 * 60 * 1000;
let sessionObj = {
session_key: session_key,
openid: openid,
unionid: unionid,
expires_in: expires_in
};
// 返回给小程序
this.ctx.bodyres = {
code: 200,
msg: '登录成功!',
data: sessionObj
};
},
fail: error=> {
this.ctx.bodyres = {
code: 501,
msg: '获取微信用户信息失败!',
data: error
};
}
});
} else {
console.log('获取用户登录态失败!' + res.errMsg);
}
}
});
在后端中,用微信提供的API获取到用户手机号
//用户手机号解密
public function getPhonenumber () {
$code = input('code/s');
$encryptedData = input('encryptedData/s');
$iv = input('iv/s');
$appid = config('wechat_mini_appid');
$secret = config('wechat_mini_appsecret');
$res = $this->getSessionKey($appid, $secret, $code);
if (!$res) {
return json([
'code' => 500,
'msg' => 'getSessionKey error'
]);
}
$session = json_decode($res, true);
$session_key = $session['session_key'];
$data = $this->decryptData($appid, $session_key, $encryptedData, $iv);
if (!$data) {
return json([
'code' => 500,
'msg' => 'decryptData error'
]);
}
return json([
'code' => 200,
'msg' => '获取手机号成功',
'data' => $data['phoneNumber']
]);
}
2.2 注意事项
通过微信官方提供的API获取用户手机号码时,需要注意以下几个问题:
需要在小程序已经登录的情况下才能获取到用户的手机号码
在获取用户登录凭证之后,需要调用微信提供的API来获取session_key,再通过session_key来解密用户信息
在解密用户信息时,需要用到微信提供的解密算法,需要在后端中用该算法进行解密
用户手机号码是加密的,不能直接获取到用户的真实手机号码,需要解密后再进行使用
3. 总结
小程序已经成为我们日常生活中不可或缺的一部分,我们可以通过微信提供的API来获取用户的手机号码,从而给用户提供更加便捷、高效的服务体验。在使用微信提供的API时,需要注意一些细节问题。