小程序的头像图片无法关联微信头像

379 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天,点击查看活动详情 image.png

问题:在电脑本地可以看到头像 但是在测试环境却没有显示 显示灰色头像(mmbiz.qpic.cn/mmbiz/icTdb…)

<open-data v-if="wxlogin" type="userAvatarUrl"></open-data>

原来官方已经回收了

image.png

uniapp 微信登录获取微信头像

uni.getUserInfo({
					provider: "weixin",
					success: (res) => {
						this.userList = res.userInfo;
						console.log('info',res.userInfo)
					}
				})

image.png

发现数据是存在的,但是当会发现不是当前登陆人的数据。只是单纯一个微信用户的数据。

		getList() {
				uni.getUserProfile({
					desc: "获取个人信息",
					success: (res) => {
						this.userList = res.userInfo;
						console.log(res.userInfo)
					}
				})
			},

image.png

搞了半天死活不弹授权窗 ,一开始放在onshow 没有弹窗,但是通过按钮到时可以弹出

解决授权窗 如果用showModel 确认弹出也行 不过点击取消还是会弹出

why???

看代码:

getList() {
				console.log("sasssss来了吗")
				uni.showModal({
					title: '授权',
					content: "是否授权微信头像",
					success: () => {
						this.getHeader()
					},
					fail: (res) => {
						return uni.$showMsg('您取消了授权')
					}
				})
			},
			getHeader() {
				uni.getUserProfile({
					desc: "获取你的昵称、头像、地区及性别",
					success: (res) => {
						this.userList = res.userInfo;
						console.log(res.userInfo)
					}
				})
			},

success 接口调用成功的回调函数 不是确认

image.png

根据确认是否弹框 得根据res.confirm 再做一层判断

uni.showModal({
					title: '授权',
					content: "是否授权微信头像",
					success: (res) => {
						if (res.confirm) {
							// console.log('用户点击确定');
							this.getHeader()
						} else if (res.cancel) {
							// console.log('用户点击取消');
						}
					},
					fail: (error) => {}
				})

参考:

1.blog.csdn.net/m0_67393295…

2.blog.csdn.net/qq_44883318…

但是切换到页面弹出是否授权不是很合理

	onShow() {
			if (this.loginStatus) {
				if (this.isFirstLogin) {
					console.log("wxLoginShow", this.wxlogin)
					this.getList();
					this.isFirstLogin = false
				}
			}
		},