小程序用户头像昵称获取不到解决办法

2023-11-15

       1. 根据官方要求,不会要求强制性授权,头像和昵称也将被收回,给的是统一的头像和昵称,需要我们调用接口去获取微信头像和昵称。

         2. 通过原生的标签调用来获取微信头像和微信昵称。注意:这里的标签不能够修改,修改会导致头像回显问题和昵称获取问题。头像获取的是本地,需要我们调用上传接口上传到服务器。

        3. 因为我这里头像显示调用的是登录接口,将头像存到全局,所以我直接调用修改登录接口将头像和昵称进行修改将数据重新存到全局,这样就导致我的头像和昵称不能为空,不然修改后的头像和昵称会被修改为空。

<template>
  <view>
    <Navbar titleText="个人信息" @goBack="goBack"></Navbar>
    <view class="box">
      <view class="title">头像</view>
      <button
        class="box"
        open-type="chooseAvatar"
        @chooseavatar="onChooseAvatar"
      >
        <image class="avatar" :src="avatarUrl"></image>
      </button>
    </view>
    <view class="box">
      <view class="title">昵称</view>
      <input
        type="nickname"
        @blur="userNameInput"
        class="name"
        placeholder="请输入昵称"
      />
    </view>
    <view class="pushBtn">
      <u-button
        @click="login"
        shape="circle"
        :custom-style="customStyle"
        :ripple="true"
        ripple-bg-color="#909399"
      >
        确定</u-button
      >
    </view>
  </view>
</template>


<script>
import Navbar from "@/components/navBar/index.vue";
import store from "@/store/index.js";
const defaultAvatarUrl =
  "https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0";
export default {
  components: {
    Navbar,
  },
  data() {
    return {
      avatarUrl: defaultAvatarUrl,
      nickname: undefined,
      customStyle: {
        width: "100%",
        height: "100%",
        color: "white",
        fontWhite: "600",
        backgroundImage: "linear-gradient(to right, #648CEA , #285EDA);",
        border: "2rpx soild #285EDA",
        fontSize: "36rpx",
      },
      header: {},
      action: "",
      images: undefined,
    };
  },
  onLoad() {
    this.header = {
      Authorization: "Bearer " + this.$store.state.user.userinfo.wxToken,
    };
    this.action = this.$BASE_URL + "/property/home/upload";
  },
  methods: {
    onChooseAvatar(e) {
      const { avatarUrl } = e.detail;
      this.avatarUrl = avatarUrl;
      uni.uploadFile({
        url: this.$BASE_URL + "/property/home/upload",
        filePath: avatarUrl,
        header: this.header,
        name: "file",
        formData: {
          user: "test",
        },
        success: (uploadFileRes) => {
          let obj = JSON.parse(uploadFileRes.data);
          this.images = obj.url;
        },
      });
    },

    //获取昵称输入内容
    userNameInput(e) {
      this.nickname = e.detail.value;
    },
    login() {
      if (this.images == "" || this.images == undefined) {
        this.$u.toast("头像不能为空");
        return;
      }
	  if (this.nickname == "" || this.nickname == undefined) {
        this.$u.toast("昵称不能为空");
        return;
      }
      let wechatId = this.$store.state.user.userinfo.wechatId;
      let nickname = this.nickname;
      let headimgUrl = this.images;
      let wxToken = this.$store.state.user.userinfo.wxToken;
      let params = {
        wechatId: wechatId,
        nickname: nickname,
        headimgUrl: headimgUrl,
        wxToken: wxToken,
      };
      this.$u.api.updateWechatUser(params).then((res) => {
        store.commit("SET_USERINFO", res.data);
        this.goBack();
      });
    },

    goBack() {
      let pages = getCurrentPages();
      let prevPage = pages[pages.length - 2];
      prevPage.$vm.refresh = Math.random() * 100;
      this.$u.route({
        type: "navigateBack",
        delta: 1,
      });
    },
  },
};
</script>

<style lang="scss" scoped>
.box {
  display: flex;
  background: white;
  justify-content: space-between;
  padding: 10rpx 20rpx;
  margin-top: 10rpx;
  .title {
    line-height: 100rpx;
  }
  .avatar {
    width: 100rpx;
    height: 100rpx;
  }
  .name {
    padding: 30rpx 80rpx;
    border-color: #dcdfe6;
    text-align: left;
  }
}
.pushBtn {
  margin: 32rpx;
  letter-spacing: 2rpx;
  height: 100rpx;
  width: calc(100% - 64rpx);
}
</style>

         4. 最后看看效果

         5. 如果有更好的建议,或者问题,欢迎小伙伴评论提出。

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

小程序用户头像昵称获取不到解决办法 的相关文章

  • 艺术+DeFi,看MEME如何玩转NFT

    内容概述 MEME代币已经成功登陆加密货币交易所Poloniex 就在成功上市之后 MEME代币价格一度飙升至1800美元高位 MEME协议允许人们赚取 菠萝积分 并将其兑换为NFT代币 9月22日 加密货币交易所Poloniex在其DeF
  • 机器学习阶段总结一

    最近一直在看机器学习相关内容 主要是看的斯坦福的Andrew Ng教授的公开课视频 可以点这里 看了前四讲 最大的感觉就是这简直就是概率论 线代 用到的数学知识着实不少 不过也挺有趣的 继续学下去 初步总结一下 主要是关于监督学习 回归分类

随机推荐

  • Redis学习:Redis的持久化

    Redis的持久化方式有两种 rdb和aof rdb理解为快照 save规则出发会的得到一个快照 aof是追加的形式 可以理解为binlog那种 RDB 在进行 RDB 的时候 redis 的主线程是不会做 io 操作的 主线程会 fork
  • 独门秘籍奉上!听说这是CCF遥感地块分割比赛冠军的“获胜法宝”!

    飞桨开发者说 黎昆昌 CCF BDCI遥感影像地块分割赛道冠军团队 CCF BDCI 2020 综合特等奖团队队长 中国科学院深圳先进技术研究院20级硕士 CCF大数据与计算智能大赛 CCF BCI 由中国计算机学会于2013年创办 作为全
  • Nginx配置不缓存html

    Nginx配置不缓存html 1 配置nginx不缓存html 1 1 修改配置文件 1 2 验证 2 Vue项目修改根目录index html 1 配置nginx不缓存html 1 1 修改配置文件 location expires 1h
  • 有特别有创意的网站设计案例

    有人说 UI 设计师集艺术性与科学性于一身 不仅需要对工具的使用熟练 更需要对美术艺术有一定的基础了解 如果想要成为优秀的 UI 设计师是一个需要磨砺的过程 需要不断的学习和积累 多看多练多感受 其中对于优质的设计案例的收集和练习是重要的
  • 清晰、幽默、轻松地深入理解YOLOv5网络结构和一些细节(查阅无数资料文献总结)

    最近的一篇关于YOLOv5检测小目标博客的点击量很高 没想到YOLOv5还是很有影响力的 既然这样 今天本人就本着幽默 清晰 轻松的风格带大家深入了解一下YOLOv5那倾倒众生的网络结构 和它较之其他算法的改进之处 还是一句话 希望我的不经
  • JavaScript的一种单元测试框架:mocha

    mocha 如果你听说过 测试驱动开发 TDD Test Driven Development 单元测试就不陌生 单元测试是用来对一个模块 一个函数或者一个类来进行正确性检验的测试工作 比如对函数abs 我们可以编写出以下几个测试用例 输入
  • pytorch 2.0.1 版本 [gpu] 安装

    安装Anaconda 1 下载官网 我们下载anaconda的目的主要是为了下一步的python环境管理 所以不考虑anaconda与已有的python的版本是否匹配的问题 下方点击之后会出现 可以根据自己的需要下载安装包 本文以Windo
  • QSerialPort串口数据传输上位机实时显示

    1 项目背景 通过串口实时传输下位机造的一帧图像数据 然后利用qt编写上位机 实现图像数据的实时显示 并保存任意帧数据 2 效果展示 3 下位机代码 include bsp clk h include bsp delay h include
  • 使用Python爬取多篇各类新闻文章

    一 简介 这篇文章主要是使用python中的requests和BeautifulSoup库来爬取上万篇的新闻文章 我这里以科技类新闻为例来爬取2000篇新闻文章http news chinairn com News moref9fff1 h
  • Redis学习

    Redis简介 REmote DIctionary Server Redis 是一个由 Salvatore Sanfilippo 写的 key value 存储系统 是跨平台的非关系型数据库 Redis 是一个开源的使用 ANSI C 语言
  • {%csrf_token%}的作用

  • 电脑右键打印不见了_win7右键没有打印选项怎么办

    2016 08 29 17 37 49 浏览量 10456 Windows10正式版系统下 如果用户同时选择多个文件 且文件数量多到某个值时 通常这个值是16 点击右键 会看到右键菜单里的 打开 打印 编辑 选项消失了 而如果同时选中的文件
  • rabbitmq中消息的存储

    1 大概原理 所有队列中的消息都以append的方式写到一个文件中 当这个文件的大小超过指定的限制大小后 关闭这个文件再创建一个新的文件供消息的写入 文件名 rdq 从0开始然后依次累加 当某个消息被删除时 并不立即从文件中删除相关信息 而
  • mysql删除数据对索引的影响_mysql中索引可以删除吗?

    mysql中索引可以删除 可以使用 DROP INDEX 语句来对索引进行删除 语法格式 DROP INDEX ON 不用的索引建议进行删除 因为它们会降低表的更新速度 影响数据库的性能 删除索引是指将表中已经存在的索引删除掉 不用的索引建
  • C++ 继承

    面向对象程序设计中最重要的一个概念是继承 继承允许我们依据另一个类来定义一个类 这使得创建和维护一个应用程序变得更容易 这样做 也达到了重用代码功能和提高执行效率的效果 当创建一个类时 您不需要重新编写新的数据成员和成员函数 只需指定新建的
  • 简单三步实现远程支持

    引言 服务是当今企业的核心竞争力 及时 精准地帮助客户解决问题 将有效提升企业的客户满意度 带来续费和增购 企业通过远程桌面解决技术支持难题 当客户或同事遇到故障时 工程师可为其提供支持 在客户监督下远程操作设备进行诊断和排障 相比上门服务
  • 计算机网络(4.8)网络层- IP层转发分组的流程

    假设 有四个A类网络通过三个路由器连接在一起 每一个网络上都可能有成千上万个主机 可以想像 若按目的主机号来制作路由表 每一 路由表就有4万个项目 即4万行 每一行对应于 一台主机 则所得出的路由表就会过于庞大 但若按主机所在的网络地址来制
  • vue-cli3.0安装element-ui组件及按需引入element-ui组件

    在VUE CLI 3下的第一个Element ui项目 菜鸟专用 上面这个链接是vue cli3 0安装element ui的详细过程 如果想要按需引用看下面的 1 引入vue add element How do you want to
  • 给定两个字符串 S 和 T,求 S 中包含 T 所有字符的最短连续子字符串的长度,同时要求时间复杂度不得超过 O(n)。

    输入 两个字符串 S 和 T S ADOBECODEBANC T ABC 输出 一个 S 字符串的子串 BANC 在这个样例中 S 中同时包含一个 A 一个 B 一个 C 的最短子字符串是 BANC function func source
  • 小程序用户头像昵称获取不到解决办法

    1 根据官方要求 不会要求强制性授权 头像和昵称也将被收回 给的是统一的头像和昵称 需要我们调用接口去获取微信头像和昵称 2 通过原生的标签调用来获取微信头像和微信昵称 注意 这里的标签不能够修改 修改会导致头像回显问题和昵称获取问题 头像