uniapp,微信小程序获取用户手机号

发布时间 2023-08-15 15:42:57作者: 幽暗天琴

1.获取手机号的按钮

<button v-if="!mobile" class="btns" style="margin-top: -100rpx;" open-type="getPhoneNumber"
@getphonenumber="getPhoneNumber">授权手机号码</button>

2.获取手机号的函数getPhoneNumber()

getPhoneNumber(e) {
let _this = this;
var code = e.detail.code;
var token = '';
console.log('获取手机号', e);

uni.login({
provider: 'weixin',
success: function(loginRes) {
// code = loginRes.code;
// console.log(code,'code');

//获取token
app.globalData.util.request({
url: 'WechatUser/getToken',

success(res) {
token = res.data.data;
console.log('token', res.data.data)

//获取手机号
app.globalData.util.request({
url: 'WechatUser/getPhone',
data: {
access_token: token,
code: code,
u_id: uni.getStorageSync('u_id')
},
success(res2) {
console.log('手机号信息', res2)
_this.mobile = res2.data.data;
if (_this.mobile) {
let userinfo = uni.getStorageSync('uInfo');
userinfo.phone = _this.mobile;
uni.setStorageSync('uInfo', userinfo)
}
uni.showToast({
title: res2.data.msg,
icon: 'none'
})

}
}, true);


}
}, true);


},
});

},

3.php对应的获取token和手机号的接口

    public function getToken(){
$config = Config::get('config');

$appid = $config[0]['value'];
$secret = $config[1]['value'];
// $appid = '';
// $secret = '';

$api = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
$res = curl_go($api);
$res = json_decode($res, true);
if ($res['access_token']) {
return $this->ajaxReturn($this->successCode, "操作成功", $res['access_token']);
}
return $this->ajaxReturn($this->errorCode, "操作失败", $res);
}

 4.获取手机号的接口

    //获取手机号
public function getPhone(){
$config = Config::get('config');

$appid = $config[0]['value'];
$secret = $config[1]['value'];

$param = $this->request->param();
if(!$param['access_token']) $this->error("access_token为空", $param);

$data = [
'code' => $param['code']
];

// $appid = '';
// $secret = '';
$api = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={$param['access_token']}";
$res = curl_go($api,json_encode($data),'POST');
$res = json_decode($res,true);

if(isset($res['phone_info']['phoneNumber'])){
//将手机号存入数据库
\think\facade\Db::name("wechat_user")->where("u_id", $param["u_id"])->update(['phone' => $res['phone_info']['phoneNumber']]);
}

return $this->ajaxReturn($this->successCode, "操作成功", $res['phone_info']['phoneNumber']);
}

5.将获取的手机号返回给小程序