新版微信接口已无法获得用户真实的昵称与头像,一键登录只能获取到用户的openid,用户的微信昵称和头像只能通过完善资料,让用户自己选择上传和填写。
一键登录
点击登录后通过wx.login
获取用户临时凭证code
,然后发送给后端,经过code2Session
接口获取到openid
。
微信小程序登录官方文档
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| getUserInfo() { return new Promise((resolve, reject) => { wx.getUserProfile({ lang: 'zh_CN', desc: '用户登录', success: (res) => { resolve(res.userInfo) }, fail: (err) => { reject(err) } }) }) },
getLogin() { return new Promise((resolve, reject) => { wx.login({ success(res) { resolve(res.code) }, fail: (err) => { reject(err) } }) }) },
login() { let userInfo = this.getUserInfo(); let wxCode = this.getLogin(); let that = this
Promise.all([userInfo, wxCode]).then((res) => { that.userInfo.nickName = res[0].nickName that.userInfo.avatarUrl = res[0].avatarUrl uni.request({ url: 'https://www.xxx.com/xxx/user/wxapp/login', method: 'GET', data: { code: res[1] }, success(res2) { that.userInfo.openid = res2.data.data.openid } }) }).catch(err => {
}) },
|
完善用户资料
button
按钮添加open-type="chooseAvatar"
让用户选择头像
input
中type="nickname"
可以让用户选择昵称
1 2 3 4 5 6 7 8 9 10 11 12
| <view> <button open-type="chooseAvatar" bindchooseavatar="onChooseAvatar"> <image class="avatar" src="{{avatarUrl}}"></image> </button> <form> <view> <view>昵称:</view> <input type="nickname" name="nickname" placeholder="请输入昵称"/> </view> <button type="primary" form-type="submit">提交</button> </form> </view>
|