前言:
由于小程序新规中已经废弃了对<button @button-type="getUserInfo和getPhoneNumber">的使用,获取手机号也不行了。
解决方案:
以前:
async getUserInfo(e) {
if (!this.agree) {
this.$api.msg('请同意注册协议')
return
}
wxuser = e.detail.userInfo
var paramuser = {
gender: wxuser.gender,
avatar: wxuser.avatarUrl,
name: wxuser.nickName,
country: wxuser.country,
province: wxuser.province,
city: wxuser.city,
wxOpenid: this.wxid.openId
}

let res_user = await this.$api.request({
url: "/get***",
data: paramuser,
method: "POST"
}) //注册
if (res_user == null) {
return
}
this.setUser(res_user);
this.$store.state.isLogin = true
uni.redirectTo({
url: `login?authPhone=true`
})
},
async getPhoneNumber(e) {
console.log("getPhoneNumber:", this.wxid)
let res_updatePhone = await this.$api.request({
url: "/getPhone",
data: {
encryptedData: e.detail.encryptedData,
iv: e.detail.iv,
sessionKey: this.wxid.Sessionkey
}
})
if (res_updatePhone == null) {
return
}
console.log("res_updatePhone:", res_updatePhone)
let user = this.user
user.phone = res_updatePhone.phone
this.$store.dispatch("updateUser", user)
this.$store.state.isLogin = true
uni.navigateBack()
},
现在: 针对只修改前端而不修改后端的方案,修改获取信息的方式,获取成功-->跳转成功
async getUserInfo(e) {
if (!this.agree) {
this.$api.msg('请同意注册协议')
return
}
var paramuser = {}
uni.getUserProfile({
desc: "获取你的昵称、头像、地区及性别",
success: (res) => {
let user = {
avatar: res.userInfo.avatarUrl,
name: res.userInfo.nickName,
wxOpenid: this.wxid.openId,
level: res.level,
gender: res.userInfo.gender,
clientName: res.clientName,
roleDesc: res.roleDesc,
id: res.id,
clientId: res.clientId
}
this.setUser(user);
paramuser = {
gender: res.userInfo.gender,
avatar: res.userInfo.avatarUrl,
name: res.userInfo.nickName,
country: res.userInfo.country,
province: res.userInfo.province,
city: res.userInfo.city,
wxOpenid: this.wxid.openId
}
this.getUserInfoCallBack(paramuser)
},
fail() {
}
})
},
----未完待续