点击按钮获取头像昵称

 
 
<!--pages/my/my.wxml-->
<view class='content'>
<image class='top' src='/image/my/top.png'></image>
    <view class='header'></view>
  <view class='my_order'></view>
</view>

  <view class="userinfo">
    <button class='getUserInfo' wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
    <block wx:else>
      <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
      <text class="userinfo-nickname">{{userInfo.nickName}}</text>
    </block>
  </view>
  

/* pages/my/my.wxss */
.content{
  height: 100%;
}
.top{
  width: 100%;
}
.header{
border-radius:50%;
border:1px solid #aaa;
width:170rpx;
height:170rpx;
position:relative;
top:-170px;
left:38%;
}
.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
  top: -250rpx;

}

.userinfo-avatar {
 width:170rpx;
height:170rpx;
margin:20rpx;
border-radius:50%;
position:relative;
top:-282rpx;
left:-2rpx;
}

.userinfo-nickname {
  color: #aaa;
  position:relative;
top:-258rpx;
font-size:34rpx;

}

.usermotto {
  margin-top: 200px;
}
.getUserInfo{
  font-size:22rpx;
  background:none;
}



//获取应用实例
const app = getApp()

Page({
  data: {
    motto: 'Hello World',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo')
  },
  //事件处理函数
  bindViewTap: function () {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onLoad: function () {
    if (app.globalData.userInfo) {
      this.setData({
        userInfo: app.globalData.userInfo,
        hasUserInfo: true
      })
    } else if (this.data.canIUse) {
      // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
      // 所以此处加入 callback 以防止这种情况
      app.userInfoReadyCallback = res => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    } else {
      // 在没有 open-type=getUserInfo 版本的兼容处理
      wx.getUserInfo({
        success: res => {
          app.globalData.userInfo = res.userInfo
          this.setData({
            userInfo: res.userInfo,
            hasUserInfo: true
          })
        }
      })
    }
  },
  getUserInfo: function (e) {
    console.log(e)
    app.globalData.userInfo = e.detail.userInfo
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  }
})



要实现uniapp小程序授权登录并获取用户头像昵称等信息,需要进行以下步骤: 1. 在uniapp小程序开发者工具中,进入“开发->开发设置”,将“调试基础库”设置为2.10.4以上版本,以支持获取用户信息的开放能力。 2. 在uniapp小程序中引入uni-auth组件,该组件可以帮助我们快速实现小程序登录授权和获取用户信息的功能。 3. 在需要授权登录的页面中,使用uni-auth组件的login方法进行登录授权。在登录成功后,会返回一个包含用户信息的userInfo对象。 4. 如果需要获取用户头像昵称等详细信息,可以使用uni.getUserInfo接口获取。该接口需要传入一个包含用户敏感信息的加密数据和解密向量的对象,在获取之前需要进行解密操作。 以下是一个简单的示例代码: ```javascript <template> <view> <button @click="login">授权登录</button> <view v-if="userInfo"> <image :src="userInfo.avatarUrl"></image> <text>{{userInfo.nickName}}</text> </view> </view> </template> <script> import uniAuth from '@/components/uni-auth/uni-auth.vue' export default { components: { uniAuth }, data() { return { userInfo: null } }, methods: { async login() { const { userInfo } = await this.$refs.auth.login() this.userInfo = userInfo } } } </script> ``` 在上面的代码中,我们引入了uni-auth组件,并在页面中添加了一个“授权登录”按钮和一个用于显示用户信息的视图。在按钮的点击事件中,我们调用了uni-auth组件的login方法进行授权登录,并在登录成功后将返回的userInfo对象赋值给页面的userInfo属性。最后,我们在视图中使用userInfo对象的avatarUrl和nickName属性渲染了用户头像昵称信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值