Uniapp登录页面获取头像、昵称的最新方法的简单使用

news2024/12/23 6:32:25

前言

        写小程序写到登录页面的时候,发现官方文档中原来的wx.getUserInfo和wx.getUserProfile不太能用了,学习了相对比较新的方法,这种方法的文档链接如下:

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html

 下面演示它的简单使用

效果说明

        写两个页面page1和page2,达到的效果是:在pages1中点击“去登录”,跳转到page2中填写头像和昵称(可以获取微信的头像和昵称),点击登录之后,将用户信息保存在storage中,跳转到page1并显示头像和昵称,同时显示退出登录按钮,点击之后退出登录,效果如下:

代码及解释

page2的代码如下:

<template>
	<view class="container">
		<!-- 官网最新登录方法 -->
		<button class="imageButton" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
		  <image class="image" :src="avatarUrl"></image>
		</button> 
		<input class="nameInput" type="nickname" v-model="username" placeholder="请输入昵称" />
		<!-- 确认登陆按钮 -->
		<button class="loginButton" @click="getUser">登录</button>
	</view>
</template>

<script>
	export default{
		data(){
			return{
				avatarUrl: 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
				username:''
			};
		},
		methods:{
			onChooseAvatar(e) {
				//打印以查看详细数据
				// console.log(e.detail)
			    this.avatarUrl= e.detail.avatarUrl;
			},
			getUser(){
				//存储上述输入的信息
				wx.setStorage({
					key:"userinfo",
					data:JSON.stringify({
						userName:this.username,
						photoUrl:this.avatarUrl
					})
				})
				//页面跳转,回到个人中心,把其它页面关闭
				wx.reLaunch({
					url:'/pages/personal/personal'
				})
			}
		}
	}
</script>

<style lang="stylus">
	.container
		text-align: center
		.imageButton
			width: 100rpx
			height: 100rpx
			padding: 0
			.image
				margin: 0
				width: 100%
				height: 100%
		.nameInput
			width: 300rpx
			height: 60rpx
			border: 1rpx solid #000
			margin: 20rpx auto;
		.loginButton
			width: 150rpx
			height: 80rpx
			font-size: 30rpx
</style>

其中,第一个button的open-type可以提示获取微信用户头像,输入框input的type可以提示获取微信用户的昵称,v-model是将输入框中的内容和自定义变量绑定,最后填充到storage中

page1的代码如下

<template>
	<view class="personal">
		<view class="header">
			<!-- 登陆状态 -->
				<template v-if="userInfo.userName">
					<image class="img" :src="userInfo.photoUrl" mode=""></image>
					<text class="login">{{userInfo.userName}}</text>
					<button class="exit" @click="exit">退出登录</button>
				</template>
			<!-- 未登陆状态 -->
				<template v-else>
					<image class="img" src="/static/images/personal/personal.png" mode=""></image>
					<text class="login" @click="toLogin">去登录</text>
				</template>
		</view>
	</view>
</template>

<script>
	export default {
		data(){
			return {
				userInfo:{}
			};
		},
		mounted() {
			//从本地存储中读取数据
			wx.getStorage({
				key:'userinfo',
				//必须用箭头函数
				success:(res)=>{
					// console.log(res);
					if(res.data)
					{
						this.userInfo=JSON.parse(res.data);
						console.log(res);
					}	
				}
			})
		},
		methods:{
			toLogin(){
				//用relaunch:登陆之后不能再返回到未登陆的状态
				wx.reLaunch({
					url:'/pages/login/login'
				})
			},
			exit(){
				//清空用户信息
				wx.setStorage({
					key:'userinfo',
					data:""
				})
				//导航登录页
				wx.reLaunch({
					url:'/pages/personal/personal' 
				})
			}
		}
	}
</script>

<style lang="stylus">
	.personal
		.header
			height: 300rpx
			line-height: 200rpx
			background-color: #EED785
			display: flex
			.img
				width:100rpx
				height:100rpx
				vertical-align: middle
				margin:50rpx
			.exit
				height: 70rpx
				width:300rpx
				margin: 60rpx
				//让按钮内文字居中 
				line-height: 70rpx

				
			
			
</style>

通过v-if判断是否登陆,从而显示不同的header

在mounted中获取storage数据,设置userInfo予以填充

点击退出登录直接清空storage再刷新page1即可

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

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

相关文章

免费的ChatGPT网站 ( 7个 )

ChatGPT的核心功能是基于用户在输入时的语言或文本生成相应的回复或继续内容。此外&#xff0c;它还能够完成多种任务&#xff0c;如撰写邮件、视频脚本、文案、翻译、代码编写以及撰写论文等。 博主归纳总结了7个国内非常好用&#xff0c;而且免费的chatGPT网站&#xff0c;AI…

Camunda ScriptTask SendTask ReceiveTask操作

文章目录 开始脚本任务(ScriptTask)发送任务(SendTask)接收任务(ReceiveTask)流程图xml 开始 前面我们已经介绍了Camunda最基本的操作和常见的监听器&#xff0c;如果不熟悉Camunda&#xff0c;可以先看一下&#xff0c;方便搭建环境&#xff0c;亲手测试。 Camunda组件与服务…

轻量式RPC调用日志链路设计方案

导语: 调用链跟踪系统,又称为tracing&#xff0c;是微服务设计架构中&#xff0c;从系统层面对整体的monitoring和profiling的一种技术手 背景说明 由于我们的项目是微服务方向&#xff0c;中后台服务调用链路过深&#xff0c;追踪路径过长&#xff0c;其中某个服务报错或者异…

YOLOv5改进芒果首发:24年最新论文Shift-ConvNets:稀疏/移位操作让小卷积核也能达到大卷积核效果,来打造新颖YOLOv5检测器

💡本篇内容:YOLOv5改进芒果首发:24年最新论文Shift-ConvNets:稀疏/移位操作让小卷积核也能达到大卷积核效果,来打造新颖YOLOv5检测器 💡附改进源代码及教程,用来改进作为 🚀改进Shift-ConvNets 深圳大学出品!!24年最新论文 Shift-ConvNets地址:https://arxiv.o…

c/c++串的链式操作

文章目录 1.链式串的定义2.初始化3.赋值为04.赋值操作5.打印操作6.源码 本篇博客中都是带头结点的串。 1.链式串的定义 这里的数据域是4个字节&#xff0c;是为了节省空间。 typedef struct StringNode{char ch[4]; //按串长分配存储区&#xff0c;ch指向串的基地址struct S…

史诗级详细离线更新centos系统的openssh,升级到9.3p1!!

离线更新openssh步骤 文章目录 前言一、openssh是什么?二、更新步骤 1.查看相关组件版本是否存在(代码包已全部打包)2.进行openssh离线更新总结(安装时可能出现的问题等)前言 对于可能很多人在离线更新openssh时都没找到一篇能解决实际问题的文章,那么今天它来了,请往下看…

安卓相对布局RelativeLayout

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"150dp"><TextViewandroid…

PostgreSql和Oracle的事务机制区别以及对程序的影响

前言 几年前IT信息产业的一些核心技术包括架构、产品以及生态都是国外制定&#xff0c;然而自从“遥遥领先”公司被制裁后&#xff0c;国家开始大力支持信息产业“新基建”&#xff0c;自2020年开始市场上涌现出了大量的国产化软件&#xff0c;就国产化数据库而言我所在的公司…

vue2+html2pdf下载PDF,PDF分页切割

问题: PDF下载下来后,文档内容被暴力分割。 解决方案: HTML <!-- 打印按钮 --> <el-button type="primary" size="small" class="el-icon-download right_btn" @click="downloadPDF">PDF</el-button><!-- …

Windows存储空间不足局域网文件共享 Dism备份系统空间不足

问题情景 在日常使用中难免遇到Windows的空间不足的情况&#xff0c;常用办法是清理垃圾释放空间&#xff0c;部分场景例如我们需要使用Dism备份完整系统&#xff0c;所以需要非常大的存储空间不够&#xff0c;如果空间不够什么才是最有效的方案呢&#xff1f; 我们假设身边没有…

字符串转换const char* , char*,QByteArray,QString,string相互转换,支持中文

文章目录 1.char * 与 const char * 的转换2.QByteArray 与 char* 的转换3.QString 与 QByteArray 的转换4.QString 与 string 的转换5.QString与const string 的转换6.QString 与 char* 的转换 在开发中&#xff0c;经常会遇到需要将数据类型进行转换的情况&#xff0c;下面依…

伪原创生成器手机版,移动端上写文章更方便!

伪原创生成器虽然不少&#xff0c;但我们大家见到最多的还是电脑使用版&#xff0c;然而提及到伪原创生成器手机版的资源却不是那么多&#xff0c;特别是对于现在手机端也成为了大家办公的一大途径&#xff0c;这主要也是因为手机的便携性&#xff0c;它可以做到让大家随时随地…

【图例】直观的感受MySQL事务的隔离级别分别解决了什么问题?以及如何查看和设置事务隔离级别!

目录 前言一、读未提交&#xff08;Read Uncommitted&#xff09;二、读已提交&#xff08;Read Committed&#xff09;三、可重复读&#xff08;Repeatable Read&#xff09;四、串行化&#xff08;Serializable&#xff09; 前言 在MySQL中&#xff0c;事务的隔离级别决定了…

如何本地搭建Emby影音管理服务并结合内网穿透实现远程访问本地影音库

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

UE4 C++ 结构体

先在UCLASS()前写入&#xff1a; USTRUCT(BlueprintType) struct FMyStruct //必须以"F"开头 {GENERATED_BODY() //必须添加“GENERATED_BODY()”UPROPERTY(EditAnywhere, BlueprintReadWrite, Category "MyStruct1")int32 Health;UPROPERTY(EditAnywher…

【算法】拦截导弹(线性DP)

题目 某国为了防御敌国的导弹袭击&#xff0c;发展出一种导弹拦截系统。 但是这种导弹拦截系统有一个缺陷&#xff1a;虽然它的第一发炮弹能够到达任意的高度&#xff0c;但是以后每一发炮弹都不能高于前一发的高度。 某天&#xff0c;雷达捕捉到敌国的导弹来袭。 由于该系…

04. 【Linux教程】安装 Linux 操作系统

通过前面的小节学习&#xff0c;我们已经对 Linux 操作系统有了简单的了解&#xff0c;同时也在 Windows 下安装了虚拟机软件 VMware &#xff0c;那么本节课我们就介绍下如何使用虚拟机软件安装 Linux 操作系统。 通过第一小节的学习我们知道 Linux 有很多的发行版本&#xf…

Unity 访问者模式(实例详解)

文章目录 实例1&#xff1a;简单的形状与统计访客实例2&#xff1a;游戏对象组件访问者实例4&#xff1a;Unity场景对象遍历与清理访客实例5&#xff1a;角色行为树访问者 访问者模式&#xff08;Visitor Pattern&#xff09;在Unity中主要用于封装对一个对象结构中各个元素的操…

用Audio2Face导出Unity面部动画

开始之前说句话&#xff0c;新年前最后一篇文章了 一定别轻易保存任何内容&#xff0c;尤其是程序员不要轻易Ctrl S 在A2F去往Unity的路上&#xff0c;还要经历特殊Blender&#xff0c;自己电脑中已下载好的可能不是很好使。 如果想查看UE相关的可以跳转到下边这两篇链接 1. …

Qt QWidget Loading界面并覆盖在其他控件上面

目录 一、效果图二、Loading三、使用 一、效果图 界面中有一个Label&#xff0c;一个Button 点击Buttion&#xff0c;显示Loading的界面&#xff0c;并覆盖到Label和Button上面 二、Loading loadingwidget.h #ifndef LOADINGWIDGET_H #define LOADINGWIDGET_H#include <…