【小程序】新版uniapp登录流程以及获取头像和昵称

news2025/1/10 12:07:14

众所周知,小程序新版登录无法拿到头像和昵称!

这篇文章讲解如何获取到微信用户昵称和头像

成品效果
  • 步骤一,点击登录,获取token

  • 在这里插入图片描述

  • 步骤二,登录按钮隐藏,展示上传按钮

  • 在这里插入图片描述

  • 步骤三,点击上传按钮

  • 在这里插入图片描述

  • 步骤四上传按钮隐藏,展示一下按钮

  • 步骤五,点击输入框,获取用户昵称

  • 在这里插入图片描述

HTML页面
<!-- 登录 -->
<view class="authorization" @click="getUser" v-if="isLogin==1">微信授权一键登录</view>


<!-- 获取用户头像 -->
<button class="authorization" type="default" open-type="chooseAvatar" @chooseavatar="chooseavatar" v-if="isLogin==2">上传微信头像</button>


<!-- 获取用户名称 -->
<input id="nickname-input" v-model="nickname" v- class="authorization white" type="nickname" placeholder="请输入用户昵称" v-if="isLogin==3">


<!-- 进入程序 -->
<view class="authorization" @click="gouser" v-if="isLogin==3" style="margin-top: 24rpx;">进入程序</view>

<!-- 暂不登录-->
<view class="no_login" @click="back" v-if="isLogin==1">暂不登录</view>
	data() {
			return {
				isLogin:1,
				code: "",
				avater: "",
				nickname: "",
			}
		},
步骤一:获取code,通过uni.login或者wx.login
methods: {
//获取code
	getcode() {
		let _this = this;
		wx.login({
			success(res) {
				if (res.code) {
					_this.code = res.code;
				} else {
					console.log('登录失败');
				}
			}
		});
	},
}
步骤二:code换取sessionKey,openid等信息,去登录,获取token

这里引用了uview组件库,注意,不是强制使用,你可以使用自己的接口使用方式

methods: {
//获取sessionKey
getUser(){
	uni.$u.http.post('/api/user/getSessionKey', {
					code: this.code
				}).then(ress => {
					console.log(ress, "key数据")
					if (ress.code == 1) {
						uni.$u.http.post('/api/user/wxMobileLogin', {
							sessionKey: ress.data.session_key,
							iv: e.detail.iv,
							encryptedData: e.detail.encryptedData,
							openid: ress.data.openid
						}).then(res => {
							if (res.code == 1) {
								let type = res.data.type
								uni.setStorageSync("token", res.data.token)
								uni.setStorageSync("userinfo", res.data)
								//进行的操作
						},1000)
					}
				}).catch(err => {
					uni.showToast({
					title: res.ms0g,
					icon: 'none',
					duration: 200
			});
		})
	}
}
步骤三:获取微信头像
//获取用户头像,获取到的头像是临时文件,要通过自己的上传接口上传到服务器
	chooseavatar(e) {
		console.log(e)
		this.avater = e.detail.avatarUrl
		this.$uploadFile(this.avater).then((image) => {
			console.log(image)
			this.avater = image.data.fullurl
		})
		this.isLogin = 3
	},
步骤四:获取微信昵称

闭坑指南

  • 当你点了自己的昵称以后,发现此时页面上双向绑定的nickname你会发现无法拿到值
  • 通过节点获取节点内容
  • 当你想判断用户有没有输入内容的时候,可以通过trim().length获取长度来判断
gouser() {
		let that =this
		uni.createSelectorQuery().in(this) // 注意这里要加上 in(this)
			.select("#nickname-input")
			.fields({
				properties: ["value"],
			})
			.exec((res) => {
				that.nickname = res?.[0]?.value
				setTimeout(()=>{
					if (that.nickname.trim().length==0) {
						uni.showToast({
							title: '请输入昵称!',
							icon: 'none'
						});
						return
					}
					let params = {
						nickname: that.nickname,
						avatar: that.avater,
					};
					console.log(params)
					that.$postAction('user/profile', params).then(res => {
						uni.switchTab({
							url: '/pages/tabBarView/home'
						})
					});
				},100)
			})
		},

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

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

相关文章

k8s介绍-组件架构-核心

文章目录一、Kubernetes介绍1、什么是Kubernetes&#xff1f;2、为什么需要Kubernetes&#xff0c;它能做什么&#xff1f;3、k8s的特性二、k8s集群架构与组件1、Master组件2、配置存储中心——etcd3、Worker Node 组件3.1 Node节点的工作流程&#xff1a;●Kubelet●Kube-Prox…

本地主机搭建服务器后如何让外网访问?快解析内网端口映射

本地主机搭建应用、部署服务器后&#xff0c;在局域网内是可以直接通过计算机内网IP网络地址进行连接访问的&#xff0c;但在外网电脑和设备如何访问呢&#xff1f;由于内网环境下&#xff0c;无法提供公网IP使用&#xff0c;外网访问内网就需要一个内外网转换的介质。这里介绍…

浅谈Kylin

1、什么是KylinApache Kylin™是一个开源的、分布式的分析型数据仓库&#xff0c;提供Hadoop/Spark 之上的 SQL 查询接口及多维分析&#xff08;OLAP&#xff09;能力以支持超大规模数据。它能在亚秒内查询巨大的表。2、谁在使用Kylin3、工作原理Apache Kylin 的工作原理就是对…

图解LeetCode——剑指 Offer 63. 股票的最大利润

一、题目 假设把某股票的价格按照时间先后顺序存储在数组中&#xff0c;请问买卖该股票一次可能获得的最大利润是多少&#xff1f; 二、示例 2.1> 示例 1: 【输入】 [7,1,5,3,6,4] 【输出】 5 【解释】 在第 2 天&#xff08;股票价格 1&#xff09;的时候买入&#xff…

vue入门(四)组件基础,$emits简单用法

上一篇&#xff1a;vue入门&#xff08;三&#xff09;事件&#xff08;方法&#xff09;处理、侦听器、模板引用 1.组件最基础的用法&#xff1a; 首先有一个button.vue的组件&#xff0c;里面只画了一个按钮 button.vue: <script> export default({data(){return{but…

备考心得100天PMP通关经验分享

01对PMP的认识 作为一线技术人员&#xff0c;在通信行业工作多年&#xff0c;深感项目管理的重要性。一个成功的项目&#xff0c;除了要把好技术关&#xff0c;项目的组织、协调、沟通、执行、风险管控等每一项都事关项目的成败。由此想到了田忌赛马的故事&#xff0c;科学合理…

用ChatGPT进行营销的一些可能场景

ChatGPT的热度席卷了全球科技圈。发布短短五天内&#xff0c;ChatGPT用户数就超过100万人&#xff1b;两个多月后月活用户突破1亿。 ChatGPT是谁&#xff1f; ChatGPT是由OpenAI开发的一个人工智能聊天机器人程序&#xff0c;于2022年11月推出。该程序使用基于GPT-3.5架构的大…

「mysql是怎样运行的」从一条记录说---InnoDB记录存储结构

「mysql是怎样运行的」从一条记录说—InnoDB记录存储结构 文章目录「mysql是怎样运行的」从一条记录说---InnoDB记录存储结构一、InnoDB页介绍二、InnoDB行格式2.1 COMPACT行格式2.2 REDUNDANT行格式2.3 溢出列2.4 DYNAMIC行格式和COMPRESSED行格式三、总结一、InnoDB页介绍 I…

字节终面,一道Linux题难住我了

以下是一道难道系数中高并且高频出现的linux面试题&#xff0c;题目具体要求如下&#xff1a; linux面试题&#xff1a; 某文件有多列数据&#xff0c;空格隔开&#xff0c;统计第n列单词&#xff0c;打印出现频率最高的5个单词。 解答这道面试题需要用到3个linux命令&#xff…

Spring @Asyn使用不当引起OOM

问题 生产环境偶尔出现pod重启&#xff0c;排查后发现是因为发生了OOM&#xff0c;才导致pod重启的。 查看日志&#xff0c;有如下错误 报错信息中描述为无法创建新的本地线程&#xff0c;根据堆栈的上线文&#xff0c;发现是因为异步接口使用了SimpleAsyncTaskExecutor执行器…

x79主板M.2无法识别固态硬盘

问题描述: 这几天在装电脑&#xff0c;买了块M.2接口固态硬盘。装上去始终无法读取到硬盘&#xff0c;一开始以为是寨板Bios问题不支持M.2的设备。更新了最新的BIOS然后还是没有识别出来&#xff0c;然而将日常用的电脑PM510硬盘装上发现可以识别&#xff0c;而且日常用电脑也…

KeePass敏感信息明文传输漏洞复现 (CVE-2023-24055)

一、漏洞描述 漏洞简述 KeePass 是一款免费的开源密码管理器&#xff0c;可帮助您以安全的方式管理您的密码。您可以将所有密码存储在一个数据库中&#xff0c;该数据库由一把万能钥匙锁定。因此&#xff0c;您只需记住一个主密钥即可解锁整个数据库。数据库文件使用目前已知…

python元类编程

1.1.propety动态属性 在面向对象编程中&#xff0c;我们一般把名词性的东西映射成属性&#xff0c;动词性的东西映射成方法。在python中他们对应的分别是属性self.xxx和类方法。但有时我们需要的属性需要根据其他属性动态的计算&#xff0c;此时如果直接使用属性方法处理&…

复习C语言过程中的总结与思考(万字长文 + 思维导图,强烈建议收藏)

内容长文&#xff0c;多图预警&#xff01;&#xff01;&#xff01;一、C语言的数据类型和读取标准1. C语言中整数型**常量**的数据类型为int类型&#xff0c;例子如下&#xff1a;2. C语言中浮点数型常量的数据类型为double类型二、C语言中的输入输出及位运算符1、scanf函数缓…

关于微服务架构的思考

引言 众所周知微服务已经经过了炒作周期的兴奋阶段&#xff0c;但并不是说它现在过时了。微服务架构算是笔者过往印象比较深的项目之一。并且&#xff0c;即使作为行业的最佳实践&#xff0c;但也能看到各种各样失败的案例。所以今天想跟大家分享一下关于微服务相关深度思考的…

【服务器数据恢复】多块磁盘离线导致RAIDZ崩溃的数据恢复案例

服务器数据恢复环境&#xff1a; SUN ZFS系列某型号存储阵列&#xff1b; 40块磁盘组建的存储池&#xff08;其中4块磁盘用作全局热备盘&#xff09;&#xff0c;池内划分出若干空间映射到服务器使用&#xff1b; 服务器使用Windows操作系统。 服务器故障&#xff1a; 服务器在…

一文讲解thop库计算FLOPs问题

问题 计算模型的FLOPs及参数大小 FLOPS是处理器性能的衡量指标&#xff0c;是“每秒所执行的浮点运算次数”的缩写。 FLOPs是算法复杂度的衡量指标&#xff0c;是“浮点运算次数”的缩写&#xff0c;s代表的是复数。 一般使用thop库来计算&#xff0c;GitHub&#xff1a; h…

c++ 那些事 笔记

GitHub - Light-City/CPlusPlusThings: C那些事 1. ① extern extern关键字&#xff0c;C语言extern关键字用法详解 如果全局变量不在文件的开头定义&#xff0c;其有效的作用范围只限于其定义处到文件结束。如果在定义点之前的函数想引用该全局变量&#xff0c;则应该在…

45个写规范代码的小技巧

目录 1、规范命名 2、规范代码格式 3、写好代码注释 4、try catch 内部代码抽成一个方法 5、方法别太长 6、抽取重复代码 7、多用return 8、if条件表达式不要太复杂 9、优雅地参数校验 10、统一返回值 11、统一异常处理 12、尽量不传递null值 13、尽量不返回null值…

BN、SyncBN、IN、LN、GN学习记录

1 BatchNormBN的原理BN是计算机视觉最常用的标准化方法&#xff0c;它沿着N、H、W维度对输入特征图求均值和方差&#xff0c;随后再利用均值和方差来归一化特征图。计算过程如下图所示&#xff0c;1&#xff09;沿着通道维度计算其他维度的均值&#xff1b;2&#xff09;沿着通…