微信小程序最新获取头像和昵称的方法 直接用!

该文章已生成可运行项目,

调整背景

微信小程序获取用户头像和昵称一个开放接口是wx.getUserInfo2021年4月5日被废弃,原因是很多开发者在打开小程序时就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户,后面新添加的一个开放接口wx.getUserProfile,也是用于获取用户头像和昵称

关于wx.getUserProfile

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

考虑到微信版本的更新,目前开发最好还是使用头像昵称填写能力这个方法来做,废话不多说代码奉上

头像填写

从基础库 2.21.2 开始支持

当小程序需要让用户完善个人资料时,可以通过微信提供的头像昵称填写能力快速完善。

根据相关法律法规,为确保信息安全,由用户上传的图片、昵称等信息微信侧将进行安全检测,组件从基础库2.24.4版本起,已接入内容安全服务端接口(mediaCheckAsyncmsgSecCheck),以减少内容安全风险对开发者的影响。

昵称填写

代码示例

<view data-weui-theme="{{theme}}">
  <button class="avatar-wrapper" open-type="chooseAvatar" bindchooseavatar="onChooseAvatar">
    <image class="avatar" src="{{avatarUrl}}"></image>
  </button> 
  <form catchsubmit="formSubmit">
    <view class="row">
      <view class="text1">昵称:</view>
        <input type="nickname" class="weui-input" name="nickname" placeholder="请输入昵称"/>
    </view>
    <button type="primary" style="margin-top: 40rpx;margin-bottom: 20rpx;" form-type="submit">提交</button>
  </form>
</view>
.avatar-wrapper {
  padding: 0;
  width: 56px !important;
  border-radius: 8px;
  margin-top: 40px;
  margin-bottom: 40px;
  background-color: #fff;
}

.avatar {
  display: block;
  width: 56px;
  height: 56px;
}

.container {
  display: flex;
}
.row{
   border-top: 1px solid #ccc;
   border-bottom: 1px solid #ccc;
   display: flex;
   align-items: center;
   height: 80rpx;
   padding-left: 20rpx;
}
.text1{
    flex: 2;
}
.weui-input{
    flex: 6;
}
const app = getApp()
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'


Page({
/**
   * 页面的初始数据
   */
  data: {
    avatarUrl: defaultAvatarUrl,
    theme: wx.getSystemInfoSync().theme,

  },

  onChooseAvatar(e) {
    const { avatarUrl } = e.detail 
   
    this.setData({
      avatarUrl,
    })
    app.globalData.userInfo.avatarUrl = avatarUrl
   
  },
  formSubmit(e){
     app.globalData.userInfo.nickName = e.detail.value.nickname
      wx.switchTab({
        url: '/pages/home/index',
      })
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.onThemeChange((result) => {
      this.setData({
        theme: result.theme
      })
    })
  },

本文章已经生成可运行项目
### 微信小程序获取用户头像功能 在微信小程序中,可以通过 `wx.getUserInfo` 接口来获取用户的头像昵称以及其他基本信息。此接口需要用户授权才能成功调用并返回所需的数据[^2]。 以下是实现该功能的具体方法: #### 1. 用户授权 在调用 `wx.getUserInfo` 前,需先确认用户是否已经同意授权。如果未授权,则引导用户进入授权页面。这一步骤可通过 `button` 组件触发,设置其属性为 `open-type="getUserInfo"` 来简化操作。 ```html <button open-type="getUserInfo" bindgetuserinfo="onGetUserInfo">点击授权</button> ``` #### 2. 调用 wx.getUserInfo 方法 当用户点击按钮并完成授权后,在回调函数中可以调用微信提供的 `wx.getUserInfo` 方法获取用户信息。 ```javascript Page({ onGetUserInfo(e) { const userInfo = e.detail.userInfo; if (userInfo) { console.log('用户头像:', userInfo.avatarUrl); this.setData({ avatarUrl: userInfo.avatarUrl, // 将头像URL存储至data供视图层使用 nickName: userInfo.nickName // 同样可保存昵称等其他信息 }); } else { console.error('用户拒绝授权'); } }, }); ``` 上述代码片段展示了如何捕获用户信息事件,并从中提取出头像链接 (`avatarUrl`) 昵称 (`nickName`) 等字段。 #### 3. 显示头像于界面 最后,在 WXML 文件里定义好展示区域即可显示所获得的头像图片。 ```html <image src="{{avatarUrl}}" mode="aspectFit"></image> <p>{{nickName}}</p> ``` 以上即完成了从请求权限到最终呈现整个流程的设计与编码工作。 #### 注意事项 - 需要确保项目配置文件(app.json 或 page.json 中) 已经声明了 `"scope.userLocation"` 的 permission 才能正常使用地理位置服务以及个人信息访问等功能。 - 如果遇到某些情况下无法正常弹框提示让用户重新选择是否允许的情况,请检查是否有缓存问题或者尝试更新最新版本 SDK 解决兼容性难题[^1]。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值