uniapp 获取微信手机号 getPhoneNumber:fail no permission 解决方法
这个错误通常是因为用户没有给予小程序获取手机号的权限导致的。为了解决这个问题,你需要在小程序中获取用户的手机号时,需要先向用户请求授权,获取授权成功后才能获取手机号。
可以通过以下步骤来实现:
- 在小程序的 app.json 文件中添加以下代码:
"permission": {
"scope.userLocation": {
"desc": '获取你的手机号码以便为你提供更好的服务'
}
}
- 在需要获取手机号的页面中,通过 wx.getSetting 接口获取用户是否已经授权:
wx.getSetting({
success: (res) => {
if (res.authSetting['scope.phoneNumber']) {
// 已经授权,可以直接调用获取手机号的接口
} else {
// 未授权,需要调用 wx.authorize 接口,请求用户授权
wx.authorize({
scope: 'scope.phoneNumber',
success: () => {
// 用户同意授权,可以调用获取手机号的接口
},
fail: () => {
// 用户拒绝授权,无法获取手机号
}
})
}
}
})
- 在用户授权成功后,可以通过 wx.getUserInfo 接口获取用户的手机号:
wx.getUserInfo({
withCredentials: true,
success: (res) => {
console.log(res)
// 获取用户手机号
let phoneNumber = res.userInfo.phoneNumber
}
})
需要注意的是,获取手机号需要用户授权,如果用户拒绝授权,则无法获取手机号。另外,只有在小程序中开启了服务器域名白名单,并且配置了业务域名才能正常获取用户手机号。
原文地址: https://www.cveoy.top/t/topic/ovJs 著作权归作者所有。请勿转载和采集!