微信小程序获取用户头像昵称组件封装(最新版)

news2024/11/16 9:37:09

一、前言

微信小程序将在2022年11月08日对获取用户头像昵称信息的API再一次进行改动,这次的改动比较大。

更多详情查看公告:公告直达链接

我的项目比较多,而且大部分都是只需要获取用户的头像以及昵称,并不需要像官方的“最佳实践案例”那样,还需要用户设置其他信息。因此自己进行了一个组件封装,以弹窗形式让用户授权或设置头像以及昵称。

博客中也会浅谈一下该如何对新旧接口进行业务逻辑的开发,让兼容性更强。

先看看效果:

在这里插入图片描述

二、组件使用

下载组件

先把组件下载下来。
组件下载链接
组件有点大,27K。是因为有使用图片的缘故,对代码包大小比较紧张的项目,建议将图片去掉或者使用字体图标代替,我这就不做处理了。

组件导入

下载压缩包后,解压,将组件直接copy进小程序项目的components目录中,如果没有,自己看着下面的文件结构创建一个。

文件目目录结构:
在这里插入图片描述

引用组件

在需要使用的页面.json文件中引入组件。
在这里插入图片描述

使用组件

wxml

在这里插入图片描述

当变量:showAvaModal为true时,弹窗便会弹出,因此只需要控制这个变量即可。

js

在这里插入图片描述

绑定回调函数:getAvaNickData(),当用户点击弹窗的设置按钮时,便会将头像本地地址以及昵称返回,接下在再接入正常的业务流程即可。

三、浅谈业务逻辑设置

注意事项

接口更改后,返回的头像地址将是本地的临时地址,因此不能再像以前一样,直接存储返回来的头像网络地址。需要将临时的头像地址上传至云存储或者服务器中,然后将返回的网络地址存储至数据库。

只需要处理好这一步,其余的业务逻辑不会受到接口变更的影响。

云开发图片以及文件上传教程博客

兼容性

接下来说一下兼容性的问题。

在这里插入图片描述

公告中指出,头像昵称填写能力仅在基础库2.21.2以上的版本中才支持,而2.10.4-2.21.0支持旧版接口能力。(2.9.5以下的不说了,版本很旧了而且兼容性处理都一样做法。)

这样一来,就需要对两种接口依赖的基础库版本做一个判断,2.21.2以上的使用自定义的弹窗组件来获取(设置)用户昵称头像,其余的使用旧接口。

示例代码:


  /**
   * 头像昵称点击监听
   */
  async setAvatarTap() {
    const {SDKVersion} = wx.getSystemInfoSync()
    // 判断是否支持getUserProfile()获取头像昵称
    const compareRes = this.compareVersion(SDKVersion, "2.21.2")
    // 不支持
    if (compareRes !== -1) {
      console.log("不支持getUserProfile()获取头像")
      // 弹出获取用户头像昵称弹窗组件
      this.setData({
        showAvaModal: true
      })
      return
    }
    // 支持
	console.log("支持getUserProfile()获取头像")
  },

/**
 * 版本比较
 * v1 >= v2 返回 0或1 否则 -1
 * @param {String} v1
 * @param {String} v2 
 */
 compareVersion (v1, v2) {
  v1 = v1.split('.')
  v2 = v2.split('.')
  const len = Math.max(v1.length, v2.length)

  while (v1.length < len) {
    v1.push('0')
  }
  while (v2.length < len) {
    v2.push('0')
  }

  for (let i = 0; i < len; i++) {
    const num1 = parseInt(v1[i])
    const num2 = parseInt(v2[i])

    if (num1 > num2) {
      return 1
    } else if (num1 < num2) {
      return -1
    }
  }

  return 0
}

四、结语

组件开发的时间比较匆忙,代码写得并不是很好,弹窗式的也不一定满足全部项目的需求,因此大家可以根据自己需求,自己开发一个组件或者直接写在页面中,如果逻辑代码不会编写,可以参考我的组件。

最后来一下常规结语:

实际开发中的其他逻辑就不写了。需要同学们自己去考虑异常情况处理等问题啦。

有任何疑问可以在评论区留下。我每天都会进行回复,私聊不回。(为了刷积分)

以上均是本人开发过程中的一些经验总结与领悟,如果有什么不正确的地方,希望大佬们评论区斧正。

💥最后!!!不管这篇文章对你有没有用,既然都看到最后了。
👍赞一个!!!
🤩当然,顺带收藏就最好了。
😎欢迎转载,原创不易,转载请注明出处✍。

😊如果你对小程序开发有兴趣或者正在学习小程序开发,可以关注我。每一篇都是原创,每一篇都是干货噢~。

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

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

相关文章

袋鼠云数栈UI5.0体验升级背后的故事:可用性原则与交互升级

最近&#xff0c;我们袋鼠云的UED部⻔小伙伴们&#xff0c;不声不响地⼲了⼀件⼤事——升级了全新设计语言「数栈UI5.0」。 众所周知&#xff0c;用户在使用产品时&#xff0c;是一个动态的过程&#xff0c;用户和产品之间进行交互的可用性&#xff0c;能否让用户愉悦、快速地…

uni-app - H5 页面路由不存在时,跳转到自己定制的 404.vue 页面(当路由不存在时自动重定向到自定义的 404 组件)超详细简约高效的解决方案

前言 在 uni-app 开发 H5 移动端项目中,如果访问一个不存在的路由路径后,自定跳转重定向到自己定义的 404 页面。 本文带您从 0-1 一路复制,仅需 2 步完成 当页面 router 路由不存在,自动跳转到指定的 404 页面, 用最简单且最高效的方式完成,助您轻松完成该功能, 如下图…

【好文鉴赏】初创公司到底值不值得去?从以下几点考虑

关键词&#xff1a;【初创公司】【职业发展】【就业】 原文链接&#xff1a; https://tech.sina.cn/csj/2018-09-10/doc-ihiixyeu5565677.d.htmlhttps://www.zhihu.com/question/312725868/answer/693656577 有人说初创公司管理不成熟&#xff0c;未来不稳定&#xff1b; 有…

最小二乘法,加权最小二乘法,迭代重加权最小二乘法

文章目录一&#xff1a;最小二乘法&#xff08;OLS&#xff09;1&#xff1a;概述2&#xff1a;代数式3&#xff1a;矩阵式&#xff08;推荐&#xff09;3.1&#xff1a;实现代码二&#xff1a;加权最小二乘法&#xff08;WLS&#xff09;1&#xff1a;增加对角矩阵 W1.1&#…

oracle数据库控制语言—DCL

文章目录1、授予系统权限1.1 授予创建其他对象权限2、撤销系统权限2.1 示例3、oracle 中的角色3.1 什么时角色3.2 创建角色并且授予权限给角色3.2.1 创建角色3.2.1.1 示例3.2.2 授予权限给一个角色3.2.2.1 示例3.2.3 授予一个角色给用户3.2.3.1 示例一3.2.3.2 示例二3.2.3.3 示…

基于MySQL的事务管理

目录 概念&#xff1a;多条语句组成一个执行单位 事务的基本操作 MySQL中的事务必须满足A,C,I,D这四个基本特性 事务操作举例——&#xff08;转账&#xff09; 事务保存点——SAVEPOINT 事务隔离级别——多线程(并发同时访问) 总结 概念&#xff1a;多条语句组成一个执…

Mongo的数据操作

文章目录一&#xff0c;创建数据库二&#xff0c;插入数据&#xff08;一&#xff09;插入单条数据1&#xff0c;insert2&#xff0c;save&#xff08;二&#xff09;插入多条数据三&#xff0c;修改数据四&#xff0c; 更新所有找到匹配的数据五&#xff0c;数据删除&#xff…

极速Go语言入门(超全超详细)-基础篇

文章目录 GoLang概述 Go语言三大牛谷歌创造Golang的原因Golang 的发展历程Golang 的语言的特点 Go语言开发工具Go开发环境配置(sdk下载及配置) 使用开发工具创建第一个Go项目 Go 程序开发的注意事项 官方参考文档 Go学习 Go变量 数据类型 标识符 运算符 键盘输入语句 程序流程…

[附源码]计算机毕业设计JAVA高校贫困生认定系统

[附源码]计算机毕业设计JAVA高校贫困生认定系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM myba…

列表的嵌套--Python

#列表的嵌套&#xff1a;在每一个列表中都包含其他列表元素 #获取李四所在列表的值? #获取李四所在的子列表索引&#xff0c;并通过索引获取改子列表值 name_list [[小明,小红,小绿],[Tom,Lily,Rose],[张三,李四,王五]] print(name_list[2]) #在从子列表中通过李四所在的索引…

[翻译] 使用FXGL创建一个非常基本的游戏

游戏要求 首先&#xff0c;让我们为我们的简单游戏定义一些要求: 一个600x600的窗口。屏幕上的玩家&#xff0c;由蓝色矩形表示。可以通过按键盘上的W、S、A或D来移动玩家。UI由一行文本表示。当玩家移动时&#xff0c;UI文本会更新以显示玩家在其生命周期内移动了多少像素。 …

今天给在家介绍一篇基于jsp的旅游网站设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

zookeeper报错length is greater than jute.maxbuffer=1048575

1、场景 最近在给上云项目部署系统&#xff0c;通过压测都已经正式上生产后发现kafka存在异常错误&#xff0c;经排查发现zookeeper也存在错误&#xff0c;怀疑kafka的问题可能是由于zk异常到的&#xff0c;报错如下 2022-11-17 06:26:43,052 [myid:] - WARN [NIOWorkerThr…

HTML学生个人网站作业设计:游戏网站设计——原神首页 1页 带轮播图

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 游戏官网 | 游戏网站 | 电竞游戏 | 游戏介绍 | 等网站的设计与制作 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 …

Burpsuite简介及MIME上传绕过实例

目录预备知识1.了解burpsuite2.了解服务端MIME类型检测实验目的实验环境实验步骤一使用Burpsuite的代理功能Target模块实验步骤二使用burpsuite上传绕过服务端MIME类型检测预备知识 1.了解burpsuite Burp Suite是用于攻击web应用程序的集成平台。包含了许多工具&#xff0c;并…

[附源码]Python计算机毕业设计 学生宿舍管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

我们与元宇宙的距离

元宇宙的发展是一个循序渐进的过程&#xff0c;需要经过初始阶段、规划阶段、系统阶段和优化阶段。当前&#xff0c;虽然已经有许多元宇宙完成了搭建&#xff0c;但都是针对单一特定场景的模拟仿真&#xff0c;并且没有实现全面的推广应用&#xff0c;因此我们仍处于元宇宙的初…

浅析多通道接收单元噪声系数的测试

之前一个朋友要测试低噪声放大器(LNA)的噪声系数&#xff0c;但是声称遇到一些麻烦。LNA噪声系数的测试采用Y因子法非常简便&#xff0c;校准完成后直接连接待测件即可测试&#xff0c;可操作性非常强。麻烦在哪里呢&#xff1f; 原来待测件是一个含有四个通道的接收模块&…

2023年三大网络安全威胁不容忽视

2022年已进入尾声&#xff0c;降低数字化风险、增强安全防御能力依然是众多企业组织数字化发展中的重要需求和目标。随着技术的不断进步&#xff0c;网络攻击者的攻击成本不断降低&#xff0c;同时攻击方式更加先进&#xff0c;美国《福布斯》网站在近日的报道中列出了2023年值…

Zoho 如何使用低代码 #1 - 赋予人力资源以技术实力

Zoho 为客户提供了一套跨功能产品&#xff0c;从运行简单的调查到简化复杂的企业组织职能&#xff0c;Zoho 几乎提供了企业的业务运行所需的一切。 组织在新的规范和挑战中不断进行扩展&#xff0c;这就不断需要构建可定制的解决方案。这就是为什么除了现成的应用程序之外&…