记录--微信小程序获取用户信息(附代码、流程图)

news2024/11/16 10:38:29

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

本篇文章主要总结了微信小程序开发,获取用户信息的整个流程步骤。补充了网上很多碎片化的代码,本人梳理了思路写下了这篇文章。

思路

1、在js文件中,设置userinfo、hasUserinfo、canIUseGetUserProfile数据

2、先判断本地缓存( wx.getStorageSync() )是否含有用户的数据,如果有就用缓存里的数据,没有就进行第三步

3、在界面添加登录按钮,用户点击按钮调用wx.getUserProfile()函数来提示用户授权登录,授权成功后,把用户头像数据和名称数据保存到缓存区里,并且改变全局变量的值

流程图

自己大概画了一下大概的流程,但希望对您有帮助!

考虑到一些新手,我将完整代码发给大家,大家按照代码对应写入对应位置即可!

wxml

<view class="banner">
    <view class="topContainer">
        <view catchtap="showBcgImgArea">
            <image class="userinfo-avatar" mode="aspectFill" src="{{userinfo.avatarUrl}}"></image>
        </view>
        <view>
            <text class="userinfo-nickname">{{userinfo.nickName}}</text>
        </view>
    </view>
    <button wx:if="{{!hasUserInfo && canIUseGetUserProfile}}" open-type="getUserInfo" bindtap="getUserProfile" class="userLogin">
        点击登录
    </button>
</view>

js

注意:avatarUrl:'../../images/ckbg1.png'

这行代码意思是当没有获取到用户信息时,页面展示头像的路径,自己要先准备好一张图片(放在images文件夹下),并填好头像路径!

data: {
        //用户基本信息(头像、昵称)
        userinfo: {
            avatarUrl:'../../images/ckbg1.png',
            nickName:'未授权'
        },
        //是否已经获取用户信息
        hasUserInfo: false,
        //是否可以调用获取信息得函数
        canIUseGetUserProfile: false,
        
    },
 //第一次获取用户信息
getUserProfile : function(e){
        wx.getUserProfile({
          desc: '获取您的微信个人信息',
          success:(res)=>{
              this.setData({
                userinfo:res.userInfo,
                hasUserInfo:true
              })
              wx.setStorageSync('userinfo', res.userInfo)
          },
          fail:function(e){
              wx.showToast({
                title: '你选择了取消',
                icon: "none",
                duration: 1500,
                mask: true
              })
          }
        })
},
 onLoad: function(n) {
    this.setData({
        canIUseGetUserProfile : true
    })
 
},
onShow: function() {
        //获取用户的本地缓存数据,userinfo信息是在用户授权登录时保存的
        var n = wx.getStorageSync("userinfo");
        //当本地缓存的用户名称不为""或者null时,设置userinfo信息
        if(n.nickName != '' && n.nickName != null){
            this.setData({
                userinfo: n,
                hasUserInfo:true,
                canIUseGetUserProfile:true
            })
            // 通过wx.login获取登录凭证(code),然后通过code去获取我们用户的openid
            wx.login({
              success:(res)=>{
                  console.log(res);
              },
            })
        }
        //清空缓存信息,测试使用
        // wx.removeStorage({
        //     key: 'userinfo',
        // });
},

在这里有必要讲解几处代码:

1、当页面加载完毕时(onLoad函数),我们将canIUseGetUserProfile数据设置ture,代表可以使用使用getUserProfile了,避免页面没有加载完毕就去获取用户信息!

2、当页面即将展示时(onShow函数),调用wx.getStorageSync获取本地缓存数据,来控制按钮的显示与否

wxss

.banner {
    border-radius: 10rpx;
    border: none;
    box-sizing: content-box;
    padding: 20rpx 0;
    width: 90%;
    height: 370rpx;
    margin: 20rpx auto;
    background:linear-gradient(109.6deg, rgb(204, 228, 247) 11.2%, rgb(237, 246, 250) 100.2%);
    /* background-image:image("../../images/cloudbg.jpg"); */
    text-align: center;
}
 
.topContainer {
    width: 100%;
    height: 260rpx;
    background-size: 100%;
    border-radius: 9px;
}
.userinfo-nickname {
    color:black;
}
.userLogin{
    width: 50%;
    box-sizing: none;
    font-size: medium;
}
.userinfo-avatar {
    width: 150rpx;
    height: 150rpx;
    margin-bottom: 10rpx;
    border-radius: 50%;
}

当缓存里没有记录用户信息时,显示的页面会出现登录按钮:

 点击按钮后,弹出授权信息

 点击允许后,会出现微信头像和微信名称

效果展示:

https://blog.csdn.net/calm_programmer/article/details/124207072

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 

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

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

相关文章

华丰科技将于12月13日上会:业绩波动明显,海通证券等为股东

近日&#xff0c;四川华丰科技股份有限公司&#xff08;下称“华丰科技”&#xff09;在上海证券交易所科创板递交招股书&#xff08;上会稿&#xff09;。据贝多财经了解&#xff0c;华丰科技将于2022年12月13日上会&#xff0c;接受科创板上市委的现场审议。 根据公开信息&am…

【嵌入式硬件芯片开发笔记】LP87702/LP87524电源芯片配置流程

【嵌入式硬件芯片开发笔记】LP87702/LP87524电源芯片配置流程 LP8752x-Q1 10-A Buck Converter With Integrated Switche 具有诊断功能的 LP87702-Q1 双路降压转换器和 5V 升压转换器 LP87702/LP87524从机地址都是0x60 LP87702/LP87524中的设备ID等寄存器&#xff0c;是根据OT…

维护4年的组件化框架 Component 升级到 KComponent 啦

前言 KComponent 它来啦. 从 2018.8 开始, Component 项目正式开源. 到目前已经 4 年的时间了. 这几年中, Component 不断升级优化. 最后趋于稳定. 为了组件化框架更好的发展, KComponent 继承了 Component 的优点, 升级为一个纯 Kotlin 的项目. 不再支持 Java, 注解驱动器也…

Java招生报名咨询系统毕业设计,Java招生咨询问答系统设计与实现,毕业设计论文怎么写毕设源码开题报告需求分析怎么做

功能清单 【系统管理员功能】 关于我们设置&#xff1a;设置学校简介、联系我们、加入我们、法律声明、学校详情 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 会员列表&#xff1a;查看所有注册会员信…

20.前端笔记CSS-精灵图

1、为啥要精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁的接收和发生请求图片&#xff0c;造成服务器的请求压力过大&#xff0c;这会大大降低页面的加载速度 为了有效减少服务器接收和发生请求的次数&…

[附源码]JAVA毕业设计图书借阅系统演示录像(系统+LW)

[附源码]JAVA毕业设计图书借阅系统演示录像&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

你不知道的goland技巧

很多人使用 Goland 有很长时间的&#xff0c;却没有好好利用上 Goland 工具带给我们的遍历&#xff0c;今天咱们就来解锁一下新技巧 过去我们使用 Goland 就是简单的配置一下 go 的 proxy &#xff0c;以及配置一下 ssh &#xff0c;与服务器进行文件的上传和下载&#xff0c;其…

基于Hadoop的用户购买行为的商品推荐系统

目录 一 绪论 1 1.1 编写目的 1 1.2 背景及意义 1 1.3 开发及运行环境 2 二 需求分析 3 2.1 系统概述 3 2.3 系统功能需求 4 2.3.1 收集原始数据 4 2.3.2 计算物品相似度矩阵 4 2.3.3 计算用户购买向量 5 2.3.4 计算推荐向量并去重和排序 5 2.3.4 数据入库 5 2.3.5 作业控制 5 …

百数:用报表搭建生产进度看板,让生产更高效

现如今我国已经步入了全新的现代化科技时代&#xff0c;国内各个行业对于数字技术也在进行着不断地应用和研究。目前数字技术在企业生产管理系统的运用中具备较为显著的优势&#xff0c;其中生产进度看板就是数字化管理系统的重要应用之一。 生产进度看板是一种可视化管理系统…

计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度附Matlab代码和论文复现

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

Mysql性能测试主要内容

Mysql性能测试主要内容 相信很多做性能测试的朋友都知道&#xff0c;性能测试并不单单只是看服务器cpu、IO、内存、网络等&#xff0c;我们还需要了解Mysql性能&#xff0c;那么我们看看Mysql性能主要内容有哪些呢&#xff1f; MySql数据库介绍 Mysql相信大家做测试的&#…

领导科学论坛杂志领导科学论坛杂志社领导科学论坛编辑部2022年第10期目录

理论前沿 列宁《怎么办&#xff1f;》中理论斗争思想及其当代价值研究 游玲; 1-7 共青团引领青年思想的百年历程及经验启示 许丽珠; 8-14 新发展格局下推进乡村产业振兴的现实困境与实践进路 杨帆; 15-19 “三治融合”治理体系的内部逻辑与创新策略 皋媛;戢仕铭…

进阶 - Git的Feature分支

本篇文章&#xff0c;是基于我自用Linux系统中的自定义文件夹“test_rep”&#xff0c;当做示例演示 具体Git仓库的目录在&#xff1a;/usr/local/git/test_rep Git的Feature分支 软件开发中&#xff0c;总有无穷无尽的新的功能要不断添加进来。添加一个新功能时&#xff0c;你…

yolov4-tiny通过pytorch导出不带split算子的onnx

前言 最近一直忙于模型移植板端&#xff0c;用了不少厂家的sdk&#xff0c;发现挺多厂家的sdk都处于起步阶段&#xff0c;缺少一些技术支持&#xff0c;比如不支持五维向量&#xff0c;不支持一些onnx算子&#xff0c;不支持过深的模型结构&#xff0c;我最爱的Yolov5,v6,v7等…

阿里云公网部署openyurt集群添加本地边缘节点并支持metrics-server和prometheus

公网部署openyurt集群并支持metrics-server和prometheus删除以前的集群创建虚拟网卡初始化主节点安装kubeadm等初始化安装网络插件flannel根据官方文档调整部署OpenYurt的Control-Plane组件部署openyurt/openyurt组件部署kuboard方便可视化主节点改造使其可以部署metrics-serve…

字节算法中了80%!靠着这份GitHub上的算法小抄,成功斩获字节Offer

最近&#xff0c;GitHub上的算法小抄又火了&#xff01;已经有不少人靠它手撕算法题&#xff0c;拿下了字节、腾讯等大厂offer&#xff01; 不问不知道&#xff0c;这份刷题笔记来自FB高级架构师、ACM金牌选手。 这位大佬在刷题和打ACM比赛中总结出了经验和套路&#xff0c;又…

C#基础知识体系框架图,及起对应我发过的博客

自己工作开发C#上位机总结的&#xff0c;不好勿喷&#xff0c;更多资料去微软官网搜索就好 下面按照从基础到开发使用的顺序&#xff0c;对应我以前发过的链接&#xff08;后面再附上我自己的框架图&#xff09;&#xff1a; C#与C不同的一些基础命令_花开莫与流年错_的博客-…

深入理解Java中的三个修饰符(抽象(abstract)、静态(static)和最终的,不可变(final))【配视频】

&#x1f345;程序员小王的博客&#xff1a;程序员小王的博客 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 如有编辑错误联系作者&#xff0c;如果有比较好的文章欢迎分享给我&#xff0c;我会取其精华去其糟粕 &#x1f345;java自学的学习…

Linux文件系统上的特殊权限

Linux 的文件权限&#xff0c;远不止 rwx 那么简单&#xff0c;还有一些特殊权限是用来打破限制和默认的安全上下文规则的&#xff0c;除了之前介绍过的隐藏属性&#xff0c;还有几个显式的特殊权限。下面就来说说 Linux 文件系统上的 SUID&#xff0c;SGID 和 Sticky 权限。 …

Vue2基础篇-20-生命周期回调函数

1.vue2的生命周期 beforeCreate &#xff1a;在实例初始化之后,进行数据侦听和事件/侦听器的配置之前同步调用&#xff1b; created: 在实例创建完成后被立即同步调用; beforeMount: 在挂载开始之前被调用 mounted : 实例被挂载后调用; beforeUpdate&#xff1a; 在数据发生…