微信小程序登录获取不到头像和昵称的详细解决办法

   2023-02-07 学习力0
核心提示:微信小程序登录获取不到头像和昵称主要原因是:小程序wx.getUserProfile接口被收回!大家可以按照文档操作↓PS:针对小程序wx.getUserProfile接口将被收回后做出的授权调整小程序文档中提出的调整说明对于此次变化,现将小程序授权方式做以调整添加判断当前基

微信小程序登录获取不到头像和昵称主要原因是:小程序wx.getUserProfile接口被收回!

大家可以按照文档操作↓

PS:

针对小程序wx.getUserProfile接口将被收回后做出的授权调整

小程序文档中提出的调整说明

微信小程序登录获取不到头像和昵称的详细解决办法

微信小程序登录获取不到头像和昵称的详细解决办法

对于此次变化,现将小程序授权方式做以调整

添加判断当前基础库是否支持头像昵称填写能力

在根目录App.vue中加入判断基础库是否大于2.21.2版本(大于此版本支持头像/昵称填写能力)

// #ifdef MP
	const version = uni.getSystemInfoSync().SDKVersion
	if (Routine.compareVersion(version, '2.21.2') >= 0) {
		that.$Cache.set('MP_VERSION_ISNEW', true)
	} else {
		that.$Cache.set('MP_VERSION_ISNEW', false)
	}
// #endif

2.修改/pages/users/wechat_login.vue文件

(1) 在data中加入基础库判断,决定授权逻辑

mp_is_new: this.$Cache.get('MP_VERSION_ISNEW') || false

(2)dom中新增逻辑判断

微信小程序登录获取不到头像和昵称的详细解决办法

(3) methods中加入方法userLogin

// 小程序 22.11.8日删除getUserProfile 接口获取用户昵称头像
	userLogin() {
		Routine.getCode()
			.then(code => {
				uni.showLoading({
					title: '正在登录中'
				});
			    authLogin({
					code,
					spread_spid: app.globalData.spid,
					spread_code: app.globalData.code
				}).then(res => {
					if (res.data.key !== undefined && res.data.key) {
						uni.hideLoading();
						this.authKey = res.data.key;
						this.isPhoneBox = true;
					} else {
						uni.hideLoading();
						let time = res.data.expires_time - this.$Cache.time();
						this.$store.commit('LOGIN', {
							token: res.data.token,
							time: time
						});
						this.getUserInfo()
					}
	
				})
			})
			.catch(err => {
				console.log(err)
			});
	},

3.新增用户头像/昵称获取能力

(1)调整pages/users/user_info.vue文件

data中添加

mp_is_new: this.$Cache.get('MP_VERSION_ISNEW') || false

(2)调整dom中

微信小程序登录获取不到头像和昵称的详细解决办法

(3)methods中加入方法

onChooseAvatar(e) {
	const { avatarUrl } = e.detail
	this.$util.uploadImgs('upload/image', avatarUrl, (res) => {
		this.userInfo.avatar = res.data.url
	}, (err) => {
		console.log(err)
	})
},

这里有一个公共方法uploadImgs需要在/utils/util.js中添加

uploadImgs(uploadUrl, filePath, successCallback, errorCallback) {
	let that = this;
	uni.uploadFile({
		url: HTTP_REQUEST_URL + '/api/' + uploadUrl,
		filePath: filePath,
		fileType: 'image',
		name: 'pics',
		formData: {
			'filename': 'pics'
		},
		header: {
			// #ifdef MP
			"Content-Type": "multipart/form-data",
			// #endif
			[TOKENNAME]: 'Bearer ' + store.state.app.token
		},
		success: (res) => {
			uni.hideLoading();
			if (res.statusCode == 403) {
				that.Tips({
					title: res.data
				});
			} else if (res.statusCode == 413) {
				that.Tips({
					title: '上传图片失败,请重新上传小尺寸图片'
				});
			} else {
				let data = res.data ? JSON.parse(res.data) : {};
				if (data.status == 200) {
					successCallback && successCallback(data)
					} else {
					errorCallback && errorCallback(data);
					that.Tips({
						title: data.msg
					});
				}
			}
		},
		fail: (err) => {
			uni.hideLoading();
				that.Tips({
				title: '上传图片失败'
			});
		}
	})
},

总结

原文地址:https://blog.csdn.net/withkai44/article/details/127878598
 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 微信小程序中overflow:scroll失效的问题 微信小程序overflow设置滚动
    微信小程序中overflow:scroll失效的问题 微信小
    .common-pop-table {padding: 0 30rpx;overflow: scroll;max-height: 70%;}研究后发现,要实际的设置对应的那个维度的高度,wcss改成.common-pop-table {padding: 0 30rpx;overflow: scroll;max-height: 400px;}就恢复正常了
    03-08
  • 微信小程序 错误记录
    1、报错this.getUserInfo(this.setData) is not a function;at pages/index/index onShow function;at api request success callback functionTypeError: this.getUserInfo is not a function在回调结果里调用这个页面的函数 this.fun() 或者 this.setData 时
    02-09
  • 微信小程序npm引入vant-weapp库的方法
    微信小程序npm引入vant-weapp库的方法
    1、终端打开小程序所在目录  2、npm init初始化,初始化完成之后,小程序项目中就会出现package.json文件,说明已经初始化成功 3、npm install --production 安装生产环境,不要npm install都给装上,以免小程序包过大  4、安装vant :npm i vant-weapp
    02-09
  • 微信小程序 -replace 方法不存在
    微信小程序 -replace 方法不存在
    在微信小程序使用正则 replace,效果出来了,但是控制台一直报错, 看着特别不舒服报错: 纵观网上各大大神教程,写什么wxs文件等等,在度娘的海洋遨游了一个多小时最后一无所获。然后 居然瞎猫碰上了死耗子。使用replace()  请先toString() 呵呵呵呵呵..
    02-09
  • 微信小程序:标签字符串直接变成标签来显示要通过富文本技术
    微信小程序:标签字符串直接变成标签来显示要通
    rich-text标签存在nodes属性直接接受标签字符串       
    02-09
  • 微信小程序左右滑动切换页面示例代码--转载
    微信小程序——左右滑动切换页面事件微信小程序的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend。这三个事件最重要的属性是pageX和pageY,表示X,Y坐标。touchstart在触摸开始时触发事件;touchend在触摸结束时触发事件;touchmove触摸的
    02-09
  • 小程序开发----微信小程序直接写 设置空格无效
    小程序开发----微信小程序直接写 设置空格无效
    1.微信小程序直接写nbsp;设置空格无效解决:卸载text组件中,并设置decode属性为true即可。1 view class='text operation'2text decode="true" 查nbsp;nbsp;nbsp;nbsp;看/text3 /view   
    02-09
  • 微信小程序 canvas导出图片模糊
    //保存到手机相册save:function () {wx.canvasToTempFilePath({x: 0,y: 0,width: 375, //导出图片的宽height: 680, //导出图片的高destWidth: 375 * 750 / wx.getSystemInfoSync().windowWidth, //绘制canvas的时候用的是px, 这里换算成rpx ,导出后非常清晰
    02-09
  • 微信小程序之自定义组件 微信小程序自定义组件详解
    微信小程序之自定义组件 微信小程序自定义组件
    在微信小程序项目中 肯定会存在很多功能和样式上相似的部分 面对这种情况 只是单单的ctrl+c ctrl+v 就显得很low了,而且也不便于后期维护那么这时候 使用微信小程序中的自定义组件功能就很合适了.那么该怎么使用自定义组件呢 首先 推荐建立一个专门放置组件
    02-09
  • 微信小程序hidden问题 微信小程序隐藏view
        context.fillText('Hello World', 20, 380);                wx.drawCanvas({                    canvasId: '2',                    actions: context.getActions()                });       
    02-09
点击排行