当前位置:   article > 正文

最新uniapp 微信小程序获取头像操作指南_uniapp小程序获取用户头像和昵称

uniapp小程序获取用户头像和昵称

小程序用户头像昵称获取规则调整公告

调整说明

自 2022 年 10 月 25 日 24 时后(以下统称 “生效期” ),用户头像昵称获取规则将进行如下调整:

  1. 自生效期起,小程序 wx.getUserProfile 接口将被收回:生效期后发布的小程序新版本,通过 wx.getUserProfile 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。
  2. 自生效期起,插件通过 wx.getUserInfo 接口获取用户昵称头像将被收回:生效期后发布的插件新版本,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的插件版本不受影响,但如果要进行版本更新则需要进行适配。通过 wx.login 与 wx.getUserInfo 接口获取 openId、unionId 能力不受影响。
  3. 「头像昵称填写能力」支持获取用户头像昵称:如业务需获取用户头像昵称,可以使用「头像昵称填写能力」(基础库 2.21.2 版本开始支持,覆盖iOS与安卓微信 8.0.16 以上版本),具体实践可见下方《最佳实践》。
  4. 小程序 wx.getUserProfile 与插件 wx.getUserInfo 接口兼容基础库 2.27.1 以下版本的头像昵称获取需求:对于来自低版本的基础库与微信客户端的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头像昵称,插件通过 wx.getUserInfo 接口将正常返回用户头像昵称,开发者可继续使用以上能力做向下兼容。

对于上述 3,wx.getUserProfile 接口、wx.getUserInfo 接口、头像昵称填写能力的基础库版本支持能力详细对比见下表:

*针对低版本基础库,兼容处理可参考 兼容文档

文档地址:头像昵称填写 | 微信开放文档 

项目实战以uniApp为例

  1. <template>
  2. <view class="containar">
  3. <view class="avatarUrl">
  4. <button type="balanced" open-type="chooseAvatar" @chooseavatar="onChooseavatar">
  5. <image :src="avatarUrl" class="refreshIcon"></image>
  6. </button>
  7. </view>
  8. <view class="nickname">
  9. <text>昵称:</text>
  10. <input type="nickname" class="weui-input" :value="nickName" @blur="bindblur" placeholder="请输入昵称"
  11. @input="bindinput" />
  12. </view>
  13. <view class="btn">
  14. <view class="btn-sub" @click="onSubmit">保存</view>
  15. </view>
  16. </view>
  17. </template>
  18. <script>
  19. export default {
  20. data() {
  21. return {
  22. avatarUrl: 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
  23. nickName: ''
  24. };
  25. },
  26. onLoad(option) {},
  27. methods: {
  28. bindblur(e) {
  29. // 获取微信昵称
  30. console.log('nickName', e)
  31. this.nickName = e.detail.value;
  32. },
  33. bindinput(e) {
  34. console.log('nickName', e)
  35. //这里要注意如果只用blur方法的话用户在输入玩昵称后直接点击保存按钮,会出现修改不成功的情况。
  36. this.nickName = e.detail.value;
  37. },
  38. onChooseavatar(e) {
  39. this.avatarUrl = e.detail.avatarUrl;
  40. },
  41. onSubmit() {
  42. if (this.nickName === '') {
  43. uni.showToast({
  44. icon: 'none',
  45. title: '请输入昵称'
  46. })
  47. return false;
  48. }
  49. uni.showLoading({
  50. title: '头像上传中...'
  51. });
  52. this.$uploadFile({
  53. url: '', // 自己请求后台地址
  54. filePath: this.avatarUrl
  55. }).then((res)=>{
  56. console.log(res)
  57. uni.showToast({
  58. title: '上传成功',
  59. icon: 'success'
  60. })
  61. setTimeout(() => {
  62. uni.navigateBack({
  63. delta: 1,
  64. })
  65. }, 1000)
  66. })
  67. }
  68. }
  69. };
  70. </script>
  71. <style lang="scss">
  72. .containar {
  73. .avatarUrl {
  74. padding: 80rpx 0 40rpx;
  75. background: #fff;
  76. button {
  77. background: #fff;
  78. line-height: 80rpx;
  79. height: auto;
  80. width: auto;
  81. padding: 20rpx 30rpx;
  82. margin: 0;
  83. display: flex;
  84. justify-content: center;
  85. align-items: center;
  86. .refreshIcon {
  87. width: 160rpx;
  88. height: 160rpx;
  89. border-radius: 50%;
  90. }
  91. .jt {
  92. width: 14rpx;
  93. height: 28rpx;
  94. }
  95. }
  96. }
  97. // botton 去除边框
  98. button::after {
  99. border: none;
  100. }
  101. .nickname {
  102. background: #fff;
  103. padding: 20rpx 30rpx 80rpx;
  104. display: flex;
  105. align-items: center;
  106. justify-content: center;
  107. .weui-input {
  108. padding-left: 60rpx;
  109. }
  110. }
  111. .btn {
  112. width: 100%;
  113. .btn-sub {
  114. width: 670rpx;
  115. margin: 80rpx auto 0;
  116. height: 90rpx;
  117. background: #DF8585;
  118. border-radius: 45rpx;
  119. line-height: 90rpx;
  120. text-align: center;
  121. font-size: 36rpx;
  122. color: #fff;
  123. }
  124. }
  125. }
  126. </style>

说明:$uploadFile 方法是自己封装的,也可以参考uniapp中的。

  1. uni.uploadFile({
  2. url: '后台uploadFile接口',
  3. filePath: avatarUrl,
  4. name: 'file',
  5. header: {
  6. token: '自己的token',
  7. },
  8. success: (res) => {
  9. // 赋值操作
  10. },
  11. fail: (error) => {
  12. uni.showToast({
  13. title: error,
  14. duration: 2000
  15. });
  16. },
  17. complete: () => {
  18. uni.hideLoading();
  19. }
  20. });

基于uniapp 封装的upload方法:

然后将方法挂载vue 原型上 就可以直接用this调用。

在main方法进行挂载。

分享到此结束,需要做小程序或者管理系统的可以私信我。 

 

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