当前位置:   article > 正文

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

小程序无法获得用户头像

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

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

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

  1. <template>
  2. <view>
  3. <Navbar titleText="个人信息" @goBack="goBack"></Navbar>
  4. <view class="box">
  5. <view class="title">头像</view>
  6. <button
  7. class="box"
  8. open-type="chooseAvatar"
  9. @chooseavatar="onChooseAvatar"
  10. >
  11. <image class="avatar" :src="avatarUrl"></image>
  12. </button>
  13. </view>
  14. <view class="box">
  15. <view class="title">昵称</view>
  16. <input
  17. type="nickname"
  18. @blur="userNameInput"
  19. class="name"
  20. placeholder="请输入昵称"
  21. />
  22. </view>
  23. <view class="pushBtn">
  24. <u-button
  25. @click="login"
  26. shape="circle"
  27. :custom-style="customStyle"
  28. :ripple="true"
  29. ripple-bg-color="#909399"
  30. >
  31. 确定</u-button
  32. >
  33. </view>
  34. </view>
  35. </template>
  36. <script>
  37. import Navbar from "@/components/navBar/index.vue";
  38. import store from "@/store/index.js";
  39. const defaultAvatarUrl =
  40. "https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0";
  41. export default {
  42. components: {
  43. Navbar,
  44. },
  45. data() {
  46. return {
  47. avatarUrl: defaultAvatarUrl,
  48. nickname: undefined,
  49. customStyle: {
  50. width: "100%",
  51. height: "100%",
  52. color: "white",
  53. fontWhite: "600",
  54. backgroundImage: "linear-gradient(to right, #648CEA , #285EDA);",
  55. border: "2rpx soild #285EDA",
  56. fontSize: "36rpx",
  57. },
  58. header: {},
  59. action: "",
  60. images: undefined,
  61. };
  62. },
  63. onLoad() {
  64. this.header = {
  65. Authorization: "Bearer " + this.$store.state.user.userinfo.wxToken,
  66. };
  67. this.action = this.$BASE_URL + "/property/home/upload";
  68. },
  69. methods: {
  70. onChooseAvatar(e) {
  71. const { avatarUrl } = e.detail;
  72. this.avatarUrl = avatarUrl;
  73. uni.uploadFile({
  74. url: this.$BASE_URL + "/property/home/upload",
  75. filePath: avatarUrl,
  76. header: this.header,
  77. name: "file",
  78. formData: {
  79. user: "test",
  80. },
  81. success: (uploadFileRes) => {
  82. let obj = JSON.parse(uploadFileRes.data);
  83. this.images = obj.url;
  84. },
  85. });
  86. },
  87. //获取昵称输入内容
  88. userNameInput(e) {
  89. this.nickname = e.detail.value;
  90. },
  91. login() {
  92. if (this.images == "" || this.images == undefined) {
  93. this.$u.toast("头像不能为空");
  94. return;
  95. }
  96. if (this.nickname == "" || this.nickname == undefined) {
  97. this.$u.toast("昵称不能为空");
  98. return;
  99. }
  100. let wechatId = this.$store.state.user.userinfo.wechatId;
  101. let nickname = this.nickname;
  102. let headimgUrl = this.images;
  103. let wxToken = this.$store.state.user.userinfo.wxToken;
  104. let params = {
  105. wechatId: wechatId,
  106. nickname: nickname,
  107. headimgUrl: headimgUrl,
  108. wxToken: wxToken,
  109. };
  110. this.$u.api.updateWechatUser(params).then((res) => {
  111. store.commit("SET_USERINFO", res.data);
  112. this.goBack();
  113. });
  114. },
  115. goBack() {
  116. let pages = getCurrentPages();
  117. let prevPage = pages[pages.length - 2];
  118. prevPage.$vm.refresh = Math.random() * 100;
  119. this.$u.route({
  120. type: "navigateBack",
  121. delta: 1,
  122. });
  123. },
  124. },
  125. };
  126. </script>
  127. <style lang="scss" scoped>
  128. .box {
  129. display: flex;
  130. background: white;
  131. justify-content: space-between;
  132. padding: 10rpx 20rpx;
  133. margin-top: 10rpx;
  134. .title {
  135. line-height: 100rpx;
  136. }
  137. .avatar {
  138. width: 100rpx;
  139. height: 100rpx;
  140. }
  141. .name {
  142. padding: 30rpx 80rpx;
  143. border-color: #dcdfe6;
  144. text-align: left;
  145. }
  146. }
  147. .pushBtn {
  148. margin: 32rpx;
  149. letter-spacing: 2rpx;
  150. height: 100rpx;
  151. width: calc(100% - 64rpx);
  152. }
  153. </style>

         4. 最后看看效果

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/675088
推荐阅读
  

闽ICP备14008679号