小程序如何获取手机号「 thinkphp3.2.3框架」

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时,需要注意一些细节问题。