在微信小程序中,可以使用 wx.getSetting
获取用户授权信息,包括是否开启了原生获取手机号权限。当 wx.getSetting
返回的结果中的 errMsg
为 getSetting:ok
时,可以通过 res.authSetting['scope.phoneNumber']
来判断是否开启了原生获取手机号权限。
如果 res.authSetting['scope.phoneNumber']
的值为 false
,则表示用户未开启原生获取手机号权限。可能的原因包括:
- 用户在微信设置中主动关闭了获取手机号权限;
- 用户曾经拒绝过获取手机号权限,并选择了不再提示;
- 用户在微信小程序进入时未授权获取手机号权限。
为了正确获取手机号,开发者可以在合适的时机使用 wx.authorize
引导用户开启获取手机号权限,示例代码如下:
wx.getSetting({
success: (res) => {
if (res.authSetting['scope.phoneNumber']) {
// 已经授权,可以直接调用 wx.getUserInfo 获取手机号
} else if (res.authSetting['scope.phoneNumber'] === false) {
wx.showModal({
title: '提示',
content: '未授权获取手机号,是否前往设置打开?',
success: (res) => {
if (res.confirm) {
wx.openSetting();
}
}
});
} else {
// 第一次进入小程序,尚未授权,可以引导用户授权获取手机号
wx.authorize({
scope: 'scope.phoneNumber',
success: () => {
// 用户允许授权,可以调用 wx.getUserInfo 获取手机号
},
fail: () => {
// 用户拒绝授权,可以向用户说明需要获取手机号的原因,并提供再次授权的机会
}
});
}
}
});
请注意,为了保护用户隐私,微信只提供了获取用户手机号的接口,但并未提供获取用户微信号的接口。