最新uniapp 微信小程序获取头像操作指南

小程序用户头像昵称获取规则调整公告

调整说明

自 2022 年 10 月 25 日 24 时后(以下统称 “生效期” ),用户头像昵称获取规则将进行如下调整:

  1. 自生效期起,小程序 wx.getUserProfile 接口将被收回:生效期后发布的小程序新版本,通过 wx.getUserProfile 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。
  2. 自生效期起,插件通过 wx.getUserInfo 接口获取用户昵称头像将被收回:生效期后发布的插件新版本,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的插件版本不受影响,但如果要进行版本更新则需要进行适配。通过 wx.login 与 wx.getUserInfo 接口获取 openId、unionId 能力不受影响。
  3. 「头像昵称填写能力」支持获取用户头像昵称:如业务需获取用户头像昵称,可以使用「头像昵称填写能力」(基础库 2.21.2 版本开始支持,覆盖iOS与安卓微信 8.0.16 以上版本),具体实践可见下方《最佳实践》。
  4. 小程序 wx.getUserProfile 与插件 wx.getUserInfo 接口兼容基础库 2.27.1 以下版本的头像昵称获取需求:对于来自低版本的基础库与微信客户端的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头像昵称,插件通过 wx.getUserInfo 接口将正常返回用户头像昵称,开发者可继续使用以上能力做向下兼容。

对于上述 3,wx.getUserProfile 接口、wx.getUserInfo 接口、头像昵称填写能力的基础库版本支持能力详细对比见下表:

*针对低版本基础库,兼容处理可参考 兼容文档

文档地址:头像昵称填写 | 微信开放文档 

项目实战以uniApp为例

<template>
	<view class="containar">
		<view class="avatarUrl">
			<button type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseavatar">
				<image :src="avatarUrl" class="refreshIcon"></image>
			</button>
		</view>
		<view class="nickname">
			<text>昵称:</text>
			<input type="nickname" class="weui-input" :value="nickName" @blur="bindblur" placeholder="请输入昵称"
				@input="bindinput" />
		</view>

		<view class="btn">
			<view class="btn-sub" @click="onSubmit">保存</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				avatarUrl: 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
				nickName: ''
			};
		},
		onLoad(option) {},
		methods: {
			bindblur(e) {
				// 获取微信昵称
				console.log('nickName', e)
				this.nickName = e.detail.value;
			},
			bindinput(e) {
				console.log('nickName', e)
				//这里要注意如果只用blur方法的话用户在输入玩昵称后直接点击保存按钮,会出现修改不成功的情况。
				this.nickName = e.detail.value;
			},
			onChooseavatar(e) {
				this.avatarUrl = e.detail.avatarUrl;
			},
			onSubmit() {
				if (this.nickName === '') {
					uni.showToast({
						icon: 'none',
						title: '请输入昵称'
					})
					return false;
				}
				uni.showLoading({
					title: '头像上传中...'
				});
				this.$uploadFile({
					url: '', // 自己请求后台地址
					filePath: this.avatarUrl
				}).then((res)=>{
					console.log(res)
					uni.showToast({
						title: '上传成功',
						icon: 'success'
					})
					setTimeout(() => {
						uni.navigateBack({
							delta: 1,
						})
					}, 1000)
					
				})
				
			}
		}
	};
</script>
<style lang="scss">
	.containar {
		.avatarUrl {
			padding: 80rpx 0 40rpx;
			background: #fff;

			button {
				background: #fff;
				line-height: 80rpx;
				height: auto;
				width: auto;
				padding: 20rpx 30rpx;
				margin: 0;
				display: flex;
				justify-content: center;
				align-items: center;


				.refreshIcon {
					width: 160rpx;
					height: 160rpx;
					border-radius: 50%;
				}

				.jt {
					width: 14rpx;
					height: 28rpx;
				}
			}
		}

		// botton 去除边框
		button::after {
			border: none;
		}

		.nickname {
			background: #fff;
			padding: 20rpx 30rpx 80rpx;
			display: flex;
			align-items: center;
			justify-content: center;

			.weui-input {
				padding-left: 60rpx;
			}
		}

		.btn {
			width: 100%;

			.btn-sub {
				width: 670rpx;
				margin: 80rpx auto 0;
				height: 90rpx;
				background: #DF8585;
				border-radius: 45rpx;
				line-height: 90rpx;
				text-align: center;
				font-size: 36rpx;
				color: #fff;
			}
		}
	}
</style>

说明:$uploadFile 方法是自己封装的,也可以参考uniapp中的。

                 uni.uploadFile({
				    url: '后台uploadFile接口',
					filePath: avatarUrl,
					name: 'file',
					header: {
						token: '自己的token',
					},
					success: (res) => {
                        // 赋值操作
					},
					fail: (error) => {
						uni.showToast({
							title: error,
							duration: 2000
						});
					},
					complete: () => {
						uni.hideLoading();
					}
				});

基于uniapp 封装的upload方法:

然后将方法挂载vue 原型上 就可以直接用this调用。

在main方法进行挂载。

分享到此结束,需要做小程序或者管理系统的可以私信我。 

 

  • 12
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp 是一款基于Vue.js框架的开发工具,让开发者可以同时构建多端应用。在实现获取微信头像的功能时,可以通过uniapp微信小程序API进行调用实现。 首先,在uniapp的配置文件manifest.json中,需要设置微信小程序appid和相应的权限,如scope.userInfo用于获取用户信息。 接着,在uniapp的页面中,通过微信小程序的wx.getUserInfo()方法获取用户信息,并获取他们的微信头像,包括头像的URL和宽高。代码示例: ``` uni.login({ success: function () { uni.getUserInfo({ success: function (res) { var userInfo = res.userInfo; var avatarUrl = userInfo.avatarUrl; var nickName = userInfo.nickName; var gender = userInfo.gender; //性别 0:未知、1:男、2:女 var province = userInfo.province; var city = userInfo.city; var country = userInfo.country; } }) } }) ``` 最后,将获取到的头像资源渲染到页面即可。代码示例: ``` <template> <view> <image :src="avatarUrl" :style="{width: avatarWidth + 'px', height: avatarHeight + 'px'}"></image> </view> </template> <script> export default { data () { return { avatarUrl: '', avatarWidth: 60, avatarHeight: 60 } }, methods: { getUserInfo () { uni.login({ success: res => { uni.getUserInfo({ success: res => { this.avatarUrl = res.userInfo.avatarUrl } }) } }) } }, mounted () { this.getUserInfo() } } </script> ``` 以上就是uniapp获取微信头像的实现方法,需要注意的是,获取用户信息需要用户授权,因此需要在小程序上进行相应设置。同时,获取小程序开发者的APPID和SECRET也是必要的操作
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值