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

news2024/9/20 21:22:59

导读:

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

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

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

解决方案:

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

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

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

 

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

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

后端需要实现以下接口:

  • 头像图片上传

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能——大白话熟悉目标检测基本流程

&#x1f466;&#x1f466;一个帅气的boy&#xff0c;你可以叫我Love And Program &#x1f5b1; ⌨个人主页&#xff1a;Love And Program的个人主页 &#x1f496;&#x1f496;如果对你有帮助的话希望三连&#x1f4a8;&#x1f4a8;支持一下博主 大白话熟悉目标检测基本…

天然产物化合物库在肥胖中的潜在靶点 | MedChemExpress

脂肪有分类&#xff1f;都说“燃脂”&#xff0c;但很少有人了解脂肪组织。其实脂肪组织主要分为两类&#xff1a;白色脂肪组织 (WAT) 和棕色脂肪组织 (BAT)。白色脂肪以甘油三酯的形式储存多余的能量&#xff0c;而棕色脂肪则通过消耗能量产热&#xff0c;在保暖和抵抗肥胖中起…

31.nacos集成Feign和Gateway实例(springcloud)

一、项目nacos-client-a 1.pom.xml文件 新增了springcloud的依赖 新增了springcloud的依赖管理 新增了feign依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://…

ArcMap10.6以上版本添加天地图底图

文章目录 申请天地图服务Key在ArcMap10.7中添加天地图服务注意点 申请天地图服务Key 天地图API&#xff1a;http://lbs.tianditu.gov.cn/server/MapService.html 需要登录后进入控制台&#xff0c;申请免费的Key&#xff1a; 在ArcMap10.7中添加天地图服务 天地图API提供…

(十)Spring之回顾反射机制

文章目录反射机制四要素Spring反射机制底层原理上一篇&#xff1a;&#xff08;九&#xff09;Spring之Bean的循环依赖问题反射机制四要素 反射机制调用方法&#xff0c;一般涉及到4个要素&#xff1a; 调用哪个对象的哪个方法传什么参数返回什么值 一般分为这几个步骤&…

Mysql语法二:表的增删改查(简单查询)

目录 1.新增&#xff08;Create) C 1.1 单行数据全列插入 1.2&#xff1a;多行新增指定列插入 1.3&#xff1a;思考题 2.查询&#xff08;Retrieve&#xff09;R 简单查询 2.1&#xff1a;指定列查询 2.2&#xff1a;查询字段为表达式 2.3&#xff1a;别名 as 2.4&…

计算机专业毕业设计演示视频(论文+系统)_kaic

演示链接https://ssm2.oss-cn-beijing.aliyuncs.com/jspSSM201%E5%A4%A7%E5%AD%A6%E7%94%9F%E7%AC%AC%E4%BA%8C%E8%AF%BE%E5%A0%82%E5%AD%A6%E5%88%86%E6%88%90%E7%BB%A9%E6%B4%BB%E5%8A%A8%E6%8A%A5%E5%90%8Dvue.mp4https://ssm2.oss-cn-beijing.aliyuncs.com/jspSSM205%E6%97…

操作系统之进程

操作系统 操作系统图解 这个图详细说明了计算机整个框架&#xff0c;系统调用&#xff0c;操作系统内核和驱动程序三个统称为操作系统&#xff0c;应用程序通过操作系统提供的api来调用硬件设备&#xff0c;而对于硬件设别来说&#xff0c;每个计算机的硬件设备的种类和厂家不…

RNA-seq 保姆教程:差异表达分析(一)

介绍 RNA-seq 目前是测量细胞反应的最突出的方法之一。RNA-seq 不仅能够分析样本之间基因表达的差异&#xff0c;还可以发现新的亚型并分析 SNP 变异。本教程[1]将涵盖处理和分析差异基因表达数据的基本工作流程&#xff0c;旨在提供设置环境和运行比对工具的通用方法。请注意&…

L2搭载率连续两个月站上30%大关,车企加速产业链整合

进入新的行业发展周期&#xff0c;车企的智能化挑战越来越大&#xff0c;也催生新一轮整合热潮。对于全球数百家中小型智能汽车技术公司来说&#xff0c;「上岸」时机已经到来。 本周&#xff0c;全球第四大汽车制造商Stellantis宣布&#xff0c;收购总部位于匈牙利的人工智能…

在 Solidity 中 ++i 为什么比 i++ 更省 Gas?

前言 作为一个初学者&#xff0c;“在 Solidity 中 i 为什么比 i 更省 Gas&#xff1f;” 这个问题始终在每个寂静的深夜困扰着我。也曾在网上搜索过相关问题&#xff0c;但没有得到根本性的解答。最终决定扒拉一下它们的字节码&#xff0c;从较为底层的层面看一下它们的差别究…

多进程编程

系列文章目录 多进程编程 VS 多线程编程_crazy_xieyi的博客-CSDN博客 文章目录 前言一、进程创建二、进程等待前言 Java对操作系统提供的多进程编程接口这些操作进行了限制&#xff0c;最终给用户只提供了两个操作&#xff1a;进程创建和进程等待。 一、进程创建 创建出一个…

Android 基础知识3-1项目目录结构

上一章我们创建了Hello Word项目&#xff0c;代码是由ADT插件自动生成的&#xff0c;我们没有对其进行编码&#xff0c;所以没有对其框架进行分析。其实每一个平台都有自己的结构框架&#xff0c;所以我们对Android项目的结构也进行分析。 与一般的Java项目一样&#xff0c;src…

Qt 学习(二) —— Qt工程基本文件详解

目录1. pro文件内容解释2. main文件内容解释3. widget.cpp/widget.h文件内容解释4. ui_widget.h文件内容解释5. widget.ui文件内容解释以Widget窗口部件项目为例&#xff0c;新建的工程目录有如下几个文件&#xff1a; QtCreator软件将他们做了如下分组&#xff0c;包含三个文件…

idea快捷搜索键

目录 1、shift shift 双击 2、Ctrl F在当前类中&#xff0c;页中进行查找相关方法等 3、CtrlShiftN按【文件名】搜索文件 4、CtrlH 查看类的继承关系 5、Alt F7 查看类在哪儿被使用 idea全局搜索的快捷键 1、shift shift 双击 可以搜索任何东西。类、资源、配置项…

运行写在字符串中的Python代码 exec(‘‘‘print(1)‘‘‘)

【小白从小学Python、C、Java】 【Python-计算机等级考试二级】 【Python-数据分析】 运行写在字符串中的Python代码 exec(print(1)) [太阳]选择题 请问对以下Python代码说法错误的是&#xff1f; print("【执行】exec(print(1))") exec(print(1)) myFuncsumab prin…

CTF秀web2

CTF秀web21.分析题目2.解题2.1信息收集3.2获取数据库3.3获取数据库表3.3获取表信息3.uinon注入语句3.1 判断注入3.2 信息收集3.3注入语句1.分析题目 如上图所示&#xff0c;可以看到是sql注入的题目&#xff0c;进入题目看看&#xff0c;题目页面如下&#xff1a; 如上图所示&a…

fastjson反序列化漏洞

1.fastjson反序列化漏洞原理 我们知道fastjson在进⾏反序列化时会调⽤⽬标对象的构造&#xff0c;setter&#xff0c;getter等⽅法&#xff0c;如果这些⽅法内部 进⾏了⼀些危险的操作时&#xff0c;那么fastjson在进⾏反序列化时就有可能会触发漏洞。 我们通过⼀个简单的案例…

kubernetes 资源管理

kubernetes 资源管理 资源管理介绍 在kubernetes中&#xff0c;所有的内容都抽象为资源&#xff0c;用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统&#xff0c;用户可以在集群中部署各种服务&#xff0c;所谓的部署服务&#xff0c;其实就是在…

纳睿雷达冲刺上市:产能利用率不足仍要扩产,毛利率持续下滑

上海证券交易所信息显示&#xff0c;广东纳睿雷达科技股份有限公司&#xff08;下称“纳睿雷达”&#xff09;的IPO进程已有8个月未有变化&#xff0c;上一次更新信息还是2022年3月10日。而证监会网站则显示&#xff0c;已向纳睿雷达发出了注册阶段三次问询问题&#xff0c;最新…