微信小程序open-data组件功能调整

2023-11-19

这里我开源了一个微信小程序的案例:https://gitee.com/xiaoshixiaoran/wechat-applet
相关后台接口我会有空用SSM重写一遍再挂上去

由于微信小程序官网在2021-12-27号发布了组件功能调整
原来的获取微信用户头像和微信昵称方式需要重新填写
在这里插入图片描述

首先分析一下,以前微信小程序是可以直接从组件获取到用户头像和昵称直接使用
现在的展示个人信息的能力将被回收在年后2022年2月21日24时起

我们来看看官网新的说明可以通过 “ 头像昵称填写功能 功能进行收集”
在这里插入图片描述
这里我们点进去看看
链接:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html

在这里插入图片描述
意思是什么呢,以后在登录微信小程序的时候,一个小程序一个可供选择的头像和昵称,可以任意改变,不和当前微信头像、昵称冲突
昵称也差不多,输入保存

下面这张图是微信小程序之前获取当前微信用户头像和昵称的方式,直接贴上去就好了
在这里插入图片描述

来说一下我的思路,首先测试一下这个头像昵称填写,把该小程序的用户头像和昵称填写后点击保存
(这里我要说明一下,当你的头像点击后这里会直接把你选择的头像上传至微信数据库然后给一个链接
直接引用过来还是比较方便的)保存给个非空判断,放到本地缓存,在登录是时候判断本地缓存是否有头像和昵称信息,有的话走以前流程直接登录,没有的话就跳转到这个页面填入该小程序的头像和昵称

在这里插入图片描述
接下来我们看代码

登录的js中自行判断在哪插入

	/**
       * 2022年1月4号插入 因为官网从2022年2月21日24时起回收通过<open-data>展示个人信息的能力
       * 所以需要改变头像昵称获取方式
       * 之前直接获取该微信头像和昵称
       * 现在流程,点击登录后判断本地缓存是否有user_avatar_nickname参数
       * 有的话就跳转主页面,没有的话跳转第一次用户登录填写头像以及昵称信息后再跳转至主页面
       */

       //读取用户头像昵称信息
      let user_avatar_nickname = wx.getStorageSync('user_avatar_nickname') ? wx.getStorageSync('user_avatar_nickname') : '[]';
      let useran = JSON.parse(user_avatar_nickname)
      
      console.log(useran.length);
      // 登录成功后检测是否存在用户头像昵称信息
      if(useran.length == 0){
       //不存在,跳转输入信息
        wx.navigateTo({
          url: '/pages/personal_center/avatar_nickname/avatar_nickname'
        })
      }else{
        // 登录成功后自动跳转至个人中心personal页面
        wx.reLaunch({
          url: '/pages/personal_center/personal/personal'
        })
      }

跳转至填入头像和昵称信息页面

wxml代码

<view class="container">
  <h2>请输入在本小程序的头像和昵称</h2>
  <button class="images" style="padding: 0; margin-top: 100rpx; margin-bottom: 100rpx;" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
  <image class="avatar images" src="{{userAvatarUrl}}"></image>
  </button>
  
  <view class="flex gd" style="margin-left: 40rpx; margin-top: 20rpx;">
    <text class="gd">昵称:</text>
    <input type="nickname" class="weui-input w200" data-type="userNickName" placeholder="请输入昵称" bindinput="handleInput" />
  </view>
  <button style="margin-top: 200rpx;" bindtap="baocun">保存</button>
</view>

css代码(可能有点丑)

.images{
  width: 200rpx;
  height: 200rpx;
}
.w200{
  width: 400rpx;
}
.weui-input{
  border: 1rpx solid #333;
  border-radius: 10rpx;
  height: 60rpx;
  line-height: 60rpx;
  padding-left: 20rpx;
  min-height:60rpx;
}
.gd{
  height: 60rpx;
  line-height: 60rpx;
}

js代码

const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    userAvatarUrl: defaultAvatarUrl,
  },

  onChooseAvatar(e) {
    console.log(e.detail)
    const { avatarUrl } = e.detail;
    this.setData({
      userAvatarUrl:avatarUrl,
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },
    //表单项内容发生改变的回调
    handleInput(event){
      //console.log(event);
      //let type = event.currentTarget.id;//id传值
      let type = event.currentTarget.dataset.type;
      //console.log(type,event.detail.value)
  
      //给初始化数据赋值
      this.setData({
        [type]:event.detail.value
      })
    },
    /*点击保存 把头像和昵称缓存到本地 */
    baocun(){
      console.log(this.data.userAvatarUrl!=defaultAvatarUrl);
      console.log(this.data.userNickName!=undefined);
      if(this.data.userAvatarUrl != defaultAvatarUrl&&this.data.userNickName!=undefined){
        let user_avatar_nickname = [this.data.userAvatarUrl,this.data.userNickName];
    console.log(user_avatar_nickname)
        //将信息存储至本地
      wx.setStorageSync('user_avatar_nickname', JSON.stringify(user_avatar_nickname)) //转成string格式
      wx.reLaunch({
        url: '/pages/personal_center/personal/personal'
      })
      }else{
        wx.showToast({
          title: '请填写完整',
          icon:'error',
        })
      }
    }
    })

登录页面点击登录后判断本地缓存是否有头像昵称信息,没有的话跳转该页面
在这里插入图片描述
填入相关信息
在这里插入图片描述
在这里插入图片描述
点击保存判断非空,存入本地缓存
在这里插入图片描述

主页面加载时,把本地缓存转存至页面缓存
在这里插入图片描述
然后页面直接引用
在这里插入图片描述
因为我这里一进去就是主页面然后点击登录,退出是直接清除本地缓存,就不知道如果有头像昵称信息会不会直接登录有空再测一下

现在真机基础库版本是2.19.6所以还无法测试

大概就算这样

有什么地方不清楚的话可以直接问我

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序open-data组件功能调整 的相关文章

  • 菜鸟教程《Python 3 教程》笔记(19):错误与异常

    菜鸟教程 Python 3 教程 笔记 19 19 错误和异常 19 1 assert 断言 19 2 异常处理 19 2 1 try except 19 2 2 try except else 19 2 3 try finally 语句
  • JAVA获取类的类对象的三种方式

    自定义一个类 MyClass 并声明该类的对象 class MyClass MyClass mClass1 new MyClass 1 2 3 在上面说过 Class 类的构造方法是私有的 只有 java 虚拟机可以调用该方法创建该类的对象
  • Linux下Qt 5.15.2源码下载及编译

    一 下载 Qt的官方下载地址 Qt Downloads Qt 5 15 2源码下载路径 archive qt 5 15 5 15 2 single qt everywhere src 5 15 2 zip 二 编译源码 Qt官网提供了编译前
  • Verilog的基础知识

    Verilog的基本介绍 硬件描述语言发展至今已有二十多年历史 当今业界的标准中 IEEE标准 主要有VHDL和Verilog HDL 这两种硬件描述语言 一个设计往往从系统级设计开始 把系统划分成几个大的基本的功能模块 每个功能模块再按一
  • centos6.5linux安装docker之升级内核

    1 没有ssl 安装之 yum y install curl nss openssl 2 升级内核 参考博文https blog csdn net lvshuocool article details 79540617 1 gt 导入pub

随机推荐

  • DTD && Schema

    XML约束简介 XML文档都是自定义标签 所以编写起来比较随意自由 所以我们要给XML文档创建一个规则 我们需要在遵守相应的规则的前提下来编写XML文档 XML约束共有两种形式 DTD Schema DTD 文档类型定义 DTD可以定义文档
  • 【万字总结篇】C++STL常用算法详解(错等年系列)

    写在前面 本小菜鸟是一名热爱编程的大二在校生 目前主要精力放在学习C 数据结构和算法上 目前C 这个专栏的博客我已经总结完了C 常用的容器 内置函数对象 仿函数 还有此篇常用的内置算法 都是一些C STL的内容 因为这部分内容不难 并且需要
  • git fetch & git pull 总结

    一 git fetch git pull 图解 最开始 github 上存放着我们的远程仓库代码 然后在本地通过 git clone 命令 将远程仓库拉取到本地仓库 此时 本地仓库的 origin master 的内容 是远程仓库 mast
  • AS配置NDK开发环境,附CMake、NDK-build构建工具用法

    注意 Android Studio需要是1 3及以上版本 且版本号小于2 2 见文末说明 步骤1 新建一个项目 打开Project Structure 设置Android NDK Location目录 如果没有提前下载NDK包 可打开SDK
  • 分享两种实现图片验证码校验登录方法

    第一种使用ValidateCode实现验证码 ValidateCode是第三方依赖包 我们要先通过命令行引用一下 1 添加jar包到本地仓库 mvn install install file DgroupId cn dsna util im
  • 使用python暴力破解ZIP、7Z 、RAR格式压缩包密码教程

    使用python暴力破解ZIP 7Z RAR格式压缩包密码教程 目录 使用python暴力破解ZIP 7Z RAR格式压缩包密码教程 一 摘要 二 使用zipfile包暴力破解ZIP 7Z格式压缩包密码 三 使用unrar包暴力破解RAR格
  • 面试官问:如何快速开发一个类似微信的聊天系统?

    去年我们公司要我去面试一位候选人 当时刚好我接手了公司的 IM 系统 借这个机会 就问了候选人这个问题 如何快速开发一个类似微信的聊天系统 这个问题的确让候选人回答起来很吃力 从分析 PC 端微信界面的实现到怎么处理框体也业务代码分离 从通
  • hibernate学习之hibernate的入门

    hibernate 可能对于我并不是很陌生 一个基于面向对象来操作SQL语句的框架 也就是一种ORM框架 在Java对象与关系型数据库之间建立某种映射 来实现直接存取Java对象 特点 将对数据库的操作直接转换为Java对象的操作 简化开发
  • flvplayer.swf flv视频播放器使用方法

    今天由于网页上要加入一个视频文件 就研究了一下flv视频播放器flvplayer swf 一 直接在html文件中加载 复制代码代码如下 div div
  • mybatis 加载顺序

    1 加载配置文件 解析配置文件 MyBatis基于XML配置文件创建Configuration对象的过程 2 SqlSessionFactoryBuilder根据传入的数据流生成Configuration对象 然后根据Configurati
  • 最常见的Java框架有哪些?

    Java语言仍然是程最受欢迎的编程语言之一 如果你想进入这个行业 Java可以引导你 很多初学者可能没有系统的了解过Java框架 今日为大家整理一下常见的Java框架有哪些 Java框架 一 Spring框架 Spring框架是Java后端
  • 区块链数字签名、验签,以及椭圆曲线算法JS库—elliptic的使用

    目录 一 简介 二 椭圆曲线密码elliptic 1 安装elliptic和js sha3 2 Keccak256 3 签名过程 一 简介 数字签名是一种将类似现实世界中物理签名 盖章
  • 更改element button 按钮颜色

    在全局的index scss里面改 显示时按钮样式 el button inblack 需要更改的按钮类型 background 060606 important border color 060606 important color ff
  • AppDomain一——基本原理

    一 问题的提出 技术一定是为了解决某个应用场景的问题而产生的 很多时候 我们都想使用 开发 USB式 热插拔 的应用 例如 开发一个WinForm应用 并且这个WinForm应用能允许开发人员定制扩展插件 我们不能关闭程序 在把新的dll替
  • vue项目部署方式:tomcat部署和nginx部署

    LINUX 发布 VUE项目 关于vue部署 1 nginx转发 一般项目前后端分离得话 都会用nginx作为反向代理转发的 因为项目要兼容ie9 使用axios发ajax请求的时候 不能通过CORS解决跨域的问题 所以尝试部署nginx作
  • 阿里云CDN架构接入WAF应用防火墙案例实践

    文章目录 1 网站架构变化 2 配置WAF应用防火墙 2 1 配置网站接入WAF防火墙 2 2 WAF防火墙生成CNAME地址 2 3 配置WAF防火墙HTTPS证书 2 4 WAF防火墙开启HTTP回源SLB 3 配置CDN加速器回源WA
  • 高德地图之地理编码

    首先申明是地理编码呢 地理编码 又称为地址匹配 是从已知的地址描述到对应的经纬度坐标的转换过程 该功能适用于根据用户输入的地址确认用户具体位置的场景 常用于配送人员根据用户输入的具体地址找地点 既地理编码 地址转坐标 下面一步步来看怎么实现
  • 面试题——Java中的锁

    文章目录 谈谈你对线程安全的理解 1 synchronized 关键字是怎么用的 1 1 构造方法可以使用 synchronized 关键字修饰么 1 2 使用 String 作为锁对象 会有什么问题 1 3 synchronized 的底
  • 单元测试到底是什么?应该怎么做?

    一 什么是单元测试 单元测试 unit testing 是指对软件中的最小可测试单元进行检查和验证 至于 单元 的大小或范围 并没有一个明确的标准 单元 可以是一个函数 方法 类 功能模块或者子系统 单元测试通常和白盒测试联系到一起 如果单
  • 微信小程序open-data组件功能调整

    这里我开源了一个微信小程序的案例 https gitee com xiaoshixiaoran wechat applet 相关后台接口我会有空用SSM重写一遍再挂上去 由于微信小程序官网在2021 12 27号发布了组件功能调整 原来的获