黑马程序员前端微信小程序开发教程,微信小程序从基础到发布全流程_企业级商城实战(

p156 chooseAddress()方法显示张三页面解决方法
在manifest.json文件中,找到mp-weixin节点,添加上:
"requiredPrivateInfos":[
"chooseLocation",
"getLocation",
"chooseAddress"
]
p176 获取登录的Token并存储
// 获取微信用户的基本信息
getUserInfo(e){
// console.log(e)
uni.getUserProfile({
// 推荐使用wx.getUserProfile获取用户信息,
//开发者每次通过该接口获取用户个人信息均需用户确认
// 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
desc: '获取头像,昵称,手机号验证信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
lang:'zh_CN',
success: (res) => {
console.log(res)
// 获取用户信息成功,res.userInfo 就是用户的基本信息
// console.log(res.userInfo)
// 将用户的基本信息存入 vuex 中
this.updateUserInfo(res.userInfo)
// 获取登录成功后的 Token 字符串
this.getToken(res)
},
fail(err) {
// console.log(err)
if(err.errMsg === 'getUserProfile:fail auth deny') return uni.$showMsg('取消了授权!')
}
})
},
// 调用登录接口,换取永久的token
getToken(info){
uni.login({
provider:'weixin',
success: async (res) => {
// console.log('login-res',res)
if(res && res.errMsg === 'login:ok') {
// 准备参数对象
const query = {
code: res.code,
encryptedData: info.encryptedData,
iv: info.iv,
rawData: info.rawData,
signature: info.signature
}
// console.log('query',query)
// 换取token
const { data: loginResult } = await uni.$http.post('/api/public/v1/users/wxlogin', query)
// console.log('loginResult',loginResult)
if(loginResult.meta.status !== 200) {
// 接口获取失败,自己赋值
const loginResult={
"message": {
"user_id": 12,
"user_email_code": null,
"is_active": null,
"user_sex": "男",
"user_qq": "",
"user_tel": "",
"user_xueli": "本科",
"user_hobby": "",
"user_introduce": null,
"create_time": 1525402223,
"update_time": 1525402223,
"token":
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjEyLCJpYXQiOjE1MjU0MDIyMjMsImV4cCI6MTUyNTQ4ODYyM30.g-4GtEQNPwT_Xs0Pq7Lrco_9DfHQQsBiOKZerkO-O-o"
},
"meta": { "msg": "登录成功", "status": 200 }
}
this.updateToken(loginResult.message.token)
uni.$showMsg('登录失败-成功!')
}
uni.$showMsg('登录成功!')
}
},
fail(err) {
uni.$showMsg(err)
}
})
}