修复微信小程序不能获取头像和昵称的bug,微信小程序新版头像昵称API使用

这篇具有很好参考价值的文章主要介绍了修复微信小程序不能获取头像和昵称的bug,微信小程序新版头像昵称API使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

导读:

大厂程序员都是有KPI绩效考核的,所以他们不能闲着,每天要想着怎么优化程序代码、怎么满足奇葩用户的需求,所以苦逼了我们这些小公司程序员,微信一个小小的API接口改动,可能就让一个小公司因此损失惨重,甚至直接面临倒闭。鹅厂可不管你这些小公司的死活,毕竟他们又不缺用户,我们只能含泪加班改功能了。

最近突然发现微信小程序的用户全都是灰色头像,昵称全都是叫“微信用户”,还以为服务器被黑客攻击,植入了大量的机器人账号,找半天问题才发现是微信小程序接口又改了,尼玛,一个头像和昵称改来改去,鹅厂程序员都没事干了吗,就跟这头像和昵称过不去了?

微信小程序无法获取头像昵称,# 微信小程序,微信小程序,bug,微信

 看微信官方的说法,意思就是不让直接使用wx.getUserProfile和wx.getUserInfo接口获取用户信息了,需要用户自已设置头像和昵称,然后你才可以使用。

解决方案:

一、参考微信官方推荐的头像昵称填写 | 微信开放文档,效果如下图:

微信小程序无法获取头像昵称,# 微信小程序,微信小程序,bug,微信

 1、点击头像,可以选择微信当前的头像,也可以自己上传其他图片作为头像;

微信小程序无法获取头像昵称,# 微信小程序,微信小程序,bug,微信

2、点击昵称输入框,可以直接输入昵称,也可以选择微信当前的昵称

微信小程序无法获取头像昵称,# 微信小程序,微信小程序,bug,微信 

小程序头像和昵称填写窗口代码:

我这个是直接封装成一个弹窗组件的,大家可以参考一下,后端代码要自己写。

后端需要实现以下接口:

  • 头像图片上传

  • 保存头像和昵称到数据库里

1、index.wxml

<i-modal bind:cancel="close" scrollUp="{{false}}" visible="{{showpop}}"> 
	<view class="mask"></view>
	<view class="container">
	  <image class="bg" mode="widthFix" src="../../images/bg.png"></image>
	  <view class='text'>
		 <view class="title">自定义头像和昵称</view>
		<button class="none-btn" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
			<image class="avatar" src="{{avatarUrl}}" mode="aspectFill"></image>
		</button> 
		<form bindsubmit="onSave">
			<input type="nickname" name="nickname" maxlength="20" value="{{nickname}}" placeholder="请输入昵称"/>
			<button form-type="submit" class="saveBtn">保存</button>
		</form>
	  </view>
	</view>
</i-modal>

2、index.wxss

/* mask layout */
.mask {
  position: absolute;
  top: 0;
  width: 100%;
  height: 100%;
  opacity:0.8;
  z-index: 2;
}

.container{
  width: 80%;
  display: flex;
  position: relative;
  flex-direction: column;
  justify-content: center;
  align-items: center;  
  font-size: small;
}
.bg{
  position: absolute;
  width: 100%;
  height: 100%;
}
.text{
  position: absolute;
  text-align: center;
  z-index: 9999;
}

.title {
  font-size: larger;
  margin-bottom: 25rpx;
  color:#fff;
  font-size:36rpx;
}
.avatar {
  width: 150rpx;
  height: 150rpx;
  border: 1rpx solid #ffffff;
  border-radius: 50%;
}
input {
  padding:10rpx 0px;
  margin-bottom:30rpx;
  width: 300rpx;
  border: 1rpx solid #333;
  text-align: center;
}
.saveBtn {
  text-align: center;
  border-radius: 10rpx;
  color:#fff;
  background: #F75451;
}

/*透明按钮*/
.none-btn {
    border: none;
    background: none;
    outline: none;
    border-style: none;
    margin: 0;
    padding: 0;
}
.none-btn::after{
    border: none;
}

3、index.js


var app = getApp();

Component({
  properties: {
    showpop: {
      type: Boolean,
      value: false
    },
	avatarUrl: {
      type: String,
      value: ''
    },
	nickname: {
      type: String,
      value: ''
    }
  },
  attached: function () {
  },
  data: {
  },
  methods: {
    close: function () {
      this.triggerEvent("cancel");
    },
    /**
	 * 更改头像
	 */
	onChooseAvatar(e) {
		var that = this;
		const { avatarUrl } = e.detail 
		that.setData({
		  avatarUrl,
		})
		wx.showLoading({
          title: '上传头像到服务器',
        })
		wx.uploadFile({
          url: "后端上传图片的接口地址",
          filePath: avatarUrl,
          name: 'upfile',
          formData: {
            'name': avatarUrl
          },
          header: {
            'content-type': 'multipart/form-data'
          },
          success: function (res) {
            wx.hideLoading();
            var data = JSON.parse(res.data);
			//后端返回图片的访问链接
            const { imageUrl } = data;
			//保存头像图片远程服务器路径
			that.setData({
			  avatarUrl:imageUrl,
			})
          }
        })		
	},
	onSave(e){
		var that = this;
		let nickname = e.detail.value.nickname.trim()
		if(nickname==null || nickname==""){
			wx.showToast({
				title:"昵称不能为空",
				icon: 'error',
				duration: 2000
			})
			return;
		}
		that.setData({
		  nickname,
		})		
		console.log("头像:"+that.data.avatarUrl);
		console.log("昵称:"+that.data.nickname);
		//保存头像和昵称到数据库中
		app.util.request({
        url: 'entry/wxapp/user',
        data: {
          controller: '后端保存头像和昵称的接口地址',
          nickName: that.data.nickname,
          avatarUrl: that.data.avatarUrl
        },
        dataType: 'json',
        success: function(res) {
          if(res.data.code==0) {
			that.setData({
			  showpop : false
			})	
            wx.showToast({
				title: "保存成功",
				icon: "success",
				duration: 2000
			});
          }
        }
      })
	}
  }
});

最后分享一下我的demo示例,弹窗框组件也包含在里面了,自己参考:

https://download.csdn.net/download/qq15577969/87096658文章来源地址https://www.toymoban.com/news/detail-515883.html

到了这里,关于修复微信小程序不能获取头像和昵称的bug,微信小程序新版头像昵称API使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于微信小程序用户头像昵称获取规则调整后的头像昵称获取方式

    小程序用户头像昵称获取规则调整公告:小程序用户头像昵称获取规则调整公告 | 微信开放社区   点击登录按钮,先去检查用户授权信息,会弹出用户授权弹窗(首次),用户点击同意授权之后,调用 wx.login 方法获取登录凭证(code),把code传给后端写的登录接口进行解析登

    2024年02月05日
    浏览(61)
  • 微信小程序如何获取用户头像昵称

        微信小程序登录用户头像昵称已经不支持支持获取,因为用户的scope.userInfo权限已经回收,可以使用昵称头像填写进行完善用户信息,按照官方推荐会显示用户在微信的头像和昵称,本文介绍一下实现方案.最终实现效果:修改头像会默认显示微信头像,修改昵称时会默认显示

    2024年02月11日
    浏览(67)
  • 微信小程序最新获取头像昵称方式

      前言 版本历史变迁 一、获取头像的正确姿势 二、获取昵称的正确姿势 总结 产品需要获取微信用户的昵称和头像。 这这还不简单,so easy! 通过 wx.getUserProfile 或者  wx.getUserInfo  就可以获取到。 但是获取的昵称是”微信用户“获取的头像是灰色的头像。 如果你也是上面这

    2024年02月13日
    浏览(42)
  • 微信小程序获取用户信息(getUserProfile接口回收后)——通过头像昵称填写获取用户头像和昵称

    背景:最近在用uniapp写微信小程序授权登录的时候,发现项目在微信开发者工具中调试是正常的,但是在真机运行时,返回的用户数据中昵称变成了微信用户,头像变成了默认的灰底头像。接着去百度了一下发现出现这个问题的原因是getUserProfile接口被回收了,微信小程序基

    2024年02月11日
    浏览(60)
  • 微信小程序获取头像昵称 保存头像到服务器

    微信官方推荐的替代做法: 头像昵称填写 | 微信开放文档 (qq.com)  wxml js wxss

    2024年02月16日
    浏览(47)
  • 微信小程序:获取用户信息(昵称和头像)

    微信小程序获取用户信息的接口几经变更,建议直接使用方式四: wx.getUserProfile 获取 组件功能调整为优化用户体验,平台将于2022年2月21日24时起回收通过展示个人信息的能力。 如有使用该技术服务,请开发者及时对小程序进行调整,避免影响服务流程。查看详情: https://de

    2023年04月08日
    浏览(55)
  • 关于微信小程序获取头像和昵称

    不知道为什么微信一直对开发者获取:微信头像+微信昵称。一直抱以限制态度,关于接口调用方法,也是一直在修改! open-type=“getUserInfo” 在2021年4月13日停用 wx.getUserInfo 在2021年4月28日停用 wx.getUserProfile 在2022年11月8日停用 但是如果你在接口 停用前 发布的,还可以正常使

    2023年04月08日
    浏览(56)
  • 微信小程序如何获取微信昵称和头像

    之前是使用open-data获取微信昵称和头像,但是更新之后,小程序不再支持使用该方法 现在需要用 wx.getUserProfile 这个API获取用户信息。页面产生点击事件(如  button  上  bindtap  的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回  userInfo 。该接口用于替换

    2024年02月11日
    浏览(47)
  • uniapp中微信小程序获取用户头像昵称

    关于小程序用户头像昵称获取规则调整的公告 意思就是说 从 2022 年 10 月 25 日 24 时后 wx.getUserProfile 获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户” 最新:用户昵称,头像获取规则 onChooseAvatar 方法必须使用 this.avatarUrl = \\\'data:image/jpeg;base64,\\\' + wx.getFileS

    2024年02月13日
    浏览(58)
  • uniapp微信小程序最新登录获取头像、昵称

    由于微信官方wx.getUserProfile 接口的回收,以后不能通过wx.getUserProfile来返回用户信息,只能自己手动获取用户头像和昵称的信息。  针对此问题有以下解决方法: 在点击登录时用一个弹窗设置头像和昵称,如图:  使用button设置open-type=\\\"chooseAvatar\\\"来获取头像,至于button更多的效

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包