这是最新的方法获取微信头像和昵称,其它所有的方法都已经失效,所有AI给的答案也都是旧的API(wx.getUserProfile)通过这个获取的都是灰色头像和默认的用户名叫微信用户

在这里插入图片描述
wx.getUserProfile:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html

在这里插入图片描述
wx.getUserInfo:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html

在这里插入图片描述
UserInfo:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/UserInfo.html

在这里插入图片描述

获取微信头像昵称:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html

小程序用户头像昵称获取规则调整公告
https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01

1、my.wxml

<!-- user-info-card.wxml -->
<view class="user-info-card">

  <view class="avatar-placeholder">
    <button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
      <image class="avatar" src="{{avatarUrl}}"></image>
    </button> 
  </view>
  
  <view class="info-container">
    <view class="info-rows">
      <view class="info-row-input">
        <text class="label">昵称 :</text>
        <input type="nickname" class="weui-input" placeholder="请输入昵称" bindinput="handleNicknameInput"  value="{{nickname}}"/>
      </view>
       <view class="info-row">
        <text class="label">手机 :</text>
        <text class="value">{{userInfo.phoneNumber}}</text>
       </view>
    </view>
  </view>

</view>

2、my.js

// my.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const avatarKey = 'userAvatar'; // 缓存头像的 key
const nicknameKey = 'userNickname'; // 缓存昵称的 key
Page({
  data: {
    avatarUrl: defaultAvatarUrl,
    nickname: ''
  },
  onChooseAvatar(e) {
    const avatarKey = 'userAvatar'; // 缓存头像的 key
    console.log('选择头像事件:', e);
    const { avatarUrl } = e.detail 
    console.log('avatarUrl: ', avatarUrl);
    this.setData({
      avatarUrl,
    })
    console.log('setStorageSync调用');
    // 存储头像信息到本地缓存
    wx.setStorageSync(avatarKey, avatarUrl);
    console.log("存储头像成功")
  },
  handleNicknameInput: function (e) {
    const nicknameKey = 'userNickname';
       const {value} = e.detail;
       console.log("输入昵称事件", value);
         this.setData({
            nickname: value
       });
          wx.setStorageSync(nicknameKey, value);
        console.log("存储昵称成功")

  },
  onLoad() {
    const avatarKey = 'userAvatar'; // 缓存的key
    const nicknameKey = 'userNickname';

    // 读取缓存的头像信息
    const cachedAvatar = wx.getStorageSync(avatarKey);
    console.log('读取缓存: ', cachedAvatar);
    if (cachedAvatar) {
      this.setData({
        avatarUrl: cachedAvatar
      });
    }
    // 读取缓存的昵称信息
    const cachedNickname = wx.getStorageSync(nicknameKey);
    console.log("读取缓存昵称", cachedNickname)
    if (cachedNickname) {
        this.setData({
            nickname: cachedNickname
        })
    }

    wx.getStorageInfo({
      success(res) {
        console.log("当前存储信息:", res);
        console.log("当前使用的大小:", res.currentSize, "KB");
        console.log("最大可用存储大小:", res.limitSize, "KB");
      }
    });
  },
  

});

3、wx.getStorageInfo

    wx.getStorageInfo({
      success(res) {
        console.log("当前存储信息:", res);
        console.log("当前使用的大小:", res.currentSize, "KB");
        console.log("最大可用存储大小:", res.limitSize, "KB");
      }
    });

在这里插入图片描述
在这里插入图片描述

4、微信小程序的本地存储能存储多久?

好的,你问到了一个关于微信小程序 Storage (本地存储) 的重要问题:微信小程序的本地存储能存储多久?

微信小程序 Storage 的存储时长:

微信小程序的本地存储 (通过 wx.setStorageSyncwx.setStorage 存储的数据) 没有明确的过期时间。这意味着,只要用户不主动清理缓存,或者小程序没有被卸载,那么存储在本地的数据通常会一直存在

需要注意的几点:

  1. 用户主动清理缓存: 用户可以在微信设置中主动清除小程序缓存,这会导致所有使用 wx.setStorageSyncwx.setStorage 存储的数据丢失。
  2. 小程序卸载: 如果用户卸载了小程序,那么所有本地存储的数据都会被清除。
  3. 微信客户端更新: 微信客户端更新通常不会清除小程序缓存,但有些版本的微信客户端更新可能会导致缓存数据丢失,这属于极少数情况。
  4. 缓存大小限制:
    • 微信小程序本地缓存有大小限制,目前默认是 10MB
    • 如果你的存储数据超过了这个限制,新的存储操作可能会失败,或者覆盖旧的数据。
    • 你需要关注本地缓存的使用情况, 并且及时清理不必要的数据。
  5. wx.setStorage 异步存储: 你可以使用 wx.setStorage 进行异步存储, 和 wx.setStorageSync 最大的区别是 wx.setStorage 是异步的, wx.setStorageSync 是同步的, 如果对异步没有特别的需求,建议使用 wx.setStorageSync
  6. wx.removeStoragewx.clearStorage 小程序提供 wx.removeStorage 用于移除特定的存储数据, wx.clearStorage 用于移除所有的本地存储。

建议:

  1. 不要存储大量数据: 尽量不要在本地存储中存储大量数据,例如图片、视频等,这些数据应该使用微信提供的其他存储方式 (例如云存储) 或服务器存储。
  2. 存储轻量级数据: 本地存储更适合存储一些轻量级的数据,例如用户设置、用户授权信息、token 等。
  3. 定期检查和清理: 你可以定期检查本地存储的使用情况,并及时清理过期或无用的数据。
  4. 不要依赖永久存储: 尽管微信小程序的本地存储理论上可以永久存储数据,但你不应该完全依赖它, 你需要在必要的时候从后端同步数据。
  5. 处理异常情况: 在读取本地存储数据时,需要处理 wx.getStorageSync 返回 null 的情况,可以使用默认值, 或者从服务器获取。

总结:

  • 微信小程序本地存储没有明确的过期时间,只要用户不主动清理或者卸载小程序,数据理论上会一直存在。
  • 你必须考虑用户可能清理缓存, 或者小程序可能卸载的情况, 做好异常处理。
  • 本地存储适合存储少量轻量级数据,不要存储大量数据。
  • 你可以使用 wx.removeStoragewx.clearStorage API 手动清除缓存。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值