【微信小程序独立开发2】授权登录 上

发布时间:2024年01月13日

前言:这一节设想完成的功能为进入小程序后请求授权信息,用户授权登录后,弹出宠物登记页面,并根据宠物类型播放背景音乐

小程序昵称头像在之前的版本获取规则为触发后弹出用户授权弹窗,授权后可直接获取用户头像和昵称,但是在2.27.1版本后,小程序收回了wx.getUserProfile接口,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。

当前版本为3.31,这里使用新版推荐方式获取用户数据,也可降级到2.27.1版本前,使用之前的接口。

1、编写底部tabBar页面

拟设置三个tabBar,分别为记录,成长,Ta的

首先创建Icons文件夹,用于保存tabBar图片

1、从iconfont中选取几个图标来充当tabBar图标,每个图标各选择两组,分别为选中和未选中

iconfont-阿里巴巴矢量图标库

2、在app.json中添加页面

?3、添加tabBar

在app.json中添加

"tabBar": {
    "color": "#999",
    "selectedColor": "#FF5700",
    "backgroundColor": "#fafafa",
    "list": [{
        "pagePath": "pages/record/record",
        "text": "记录",
        "iconPath": "./icons/1.png",
        "selectedIconPath": "./icons/3.png"
    },
    {
        "pagePath": "pages/grow/grow",
        "text": "成长点滴",
        "iconPath": "./icons/6.png",
        "selectedIconPath": "./icons/5.png"
    },{
        "pagePath": "pages/Ta/Ta",
        "text": "Ta的",
        "iconPath": "./icons/2.png",
        "selectedIconPath": "./icons/4.png"
    }]},

此时页面效果

2、编写Ta的页面

页面未登录时,显示默认头像和默认昵称,点击编辑个人信息后,显示个人信息编辑页面

头像可选择使用微信头像或者从相册上传头像,昵称同上

首先编写一个简单的展示页面,未登录时,头像,昵称和ID显示默认值

<!--pages/Ta/Ta.wxml-->
<view class="pet_wrapper">
    <!-- 用户信息 -->
    <view class="user_info_wrapper">
        <view class="user_info">
            <image src="{{avatarUrl}}" mode="widthFix"/>
            <view class="user">
                <view class="user_id">ID:{{userId}}</view>
                <view class="user_name">{{nickName}}</view>
            </view>
            <button class="edit_user_info" bind:tap="editUserInfo">编辑个人信息</button>
        </view>
    </view>
    
    <!-- 功能栏 -->
</view>
// pages/Ta/Ta.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
const defaultNickName = "铲屎官"
const defaultUserId = "001"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    avatarUrl: defaultAvatarUrl,
    nickName: defaultNickName,
    userId: defaultUserId
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },
  editUserInfo(){
    wx.navigateTo({
      url: '/pages/userInfo/userInfo',
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})
/* pages/Ta/Ta.wxss */
.pet_wrapper{
    .user_info_wrapper{
        .user_info{
            display: flex;
            margin: 20rpx;
            image{
                flex: 1;
                width: 30rpx;
                height: 30rpx;
                border-radius: 100%;
            }
            .user{
                flex: 2;
                display: flex;
                flex-direction: column;
                width: 80rpx;
                height: 100rpx;
                margin-left: 30rpx;
                .user_id{
                    flex: 2;
                    font-size: 28rpx;
                }
                .user_name{
                    flex: 1;
                    font-size: 28rpx;
                }
            }
            button{
                flex: 1;
                width: 80rpx;
                height: 60rpx;
                background-color: #fff;
                justify-content: center;
                font-size: 25rpx;
               
            }
        }
    }
}

给button绑定事件,当点击按钮时,跳转到个人信息编辑页

在app.json中添加userInfo

?设置userInfo页面的顶部导航栏名称

基本页面仿照宠本本小程序进行编写

?

<!--pages/userInfo/userInfo.wxml-->
<view class="edit_userInfo_wrap">
    <!-- 用户头像 -->
    <view class="user_avatar_wrap">
        <image src="{{userInfo.avatarUrl}}"  mode="widthFix"/>
    </view>

    <!-- 用户基本信息 -->
    <view class="user_info_wrap">
        <!-- 昵称设置 -->
        <view class="user_name_wrap">
            <view class="user_name" >
                <text>铲屎官昵称</text>
                <navigator url="/pages/editNickName/editNickName">
                    {{userInfo.nickName}}
                </navigator> 
            </view>
        </view>

        <!-- 基本信息设置 -->
        <view class="edit_user_info_wrap">
            <view class="user_birthday">
                <text>生日</text>
            </view>
            <view class="user_sex">
                <text>性别</text>
                
            </view>
            <view class="user_address">
                <text>地区</text>
                
            </view>
        </view>

        <!-- 手机号设置 -->
        <view class="phone_wrap">
            <view class="userId_wrap">
                <text>ID</text>
                <view class="user_id">
                    {{userInfo.userId}}
                </view>
            </view>
            <view class="user_telPhone">
                <text>手机号</text>
                {{userInfo.telPhone}}
            </view>
        </view>
    </view>

    <!-- 保存按钮 -->
    <view class="save_button">
        <button >保存编辑</button>
    </view>
</view>
/* pages/userInfo/userInfo.wxss */
page{
    background-color: #f5f5ed;
}
.edit_userInfo_wrap{
    display: flex;
    flex-direction: column;
    height: 100vh;
    
    .user_avatar_wrap{
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-top: 20rpx;
        image{
            border:2rpx solid white;
            width: 150rpx;
            height: 150rpx;
            border-radius: 100%;
        }
    }

    .user_info_wrap{
       flex: 6;
       line-height: 100rpx;
       margin: 20rpx 50rpx 50rpx 50rpx;
       font-size: 26rpx;
        .user_name_wrap{
            background-color: #fff;
            border-radius: 25rpx;
            .user_name{
                margin: 30rpx;
                display: flex;
                text{
                    flex: 1;
                    color: #615839;
                    font-size: 30rpx;
                }
                navigator{
                    
                }
            }
        }

        .edit_user_info_wrap{
            background-color: #fff;
            border-radius: 25rpx;
            .user_birthday{
                text{
                    color: #615839;
                    font-size: 30rpx;
                }
                margin: 30rpx;
                border-bottom: 1rpx solid #f5f5ed;
            }

            .user_sex{
                text{
                    color: #615839;
                    font-size: 30rpx;
                }
                margin: 30rpx;
                border-bottom: 1rpx solid #f5f5ed;
            }

            .user_address{
                text{
                    color: #615839;
                    font-size: 30rpx;
                }
                margin: 30rpx;
            }
        }

        .phone_wrap{
            background-color: #fff;
            border-radius: 25rpx;
            .userId_wrap{
                display: flex;
                margin: 30rpx;
                border-bottom: 1rpx solid #f5f5ed;
                text{
                    flex: 1;
                    color: #615839;
                    font-size: 30rpx;
                }
               .user_id{

               }
            }

            .user_telPhone{
                text{
                    color: #615839;
                    font-size: 30rpx;
                }
                margin: 30rpx;
            }
        }
    }

    .save_button{
        flex: 1;
        border-radius: 40rpx 40rpx 0 0 ;
        background-color: #fff;
        button{
            margin-top: 15rpx;
            width: 80%;
            border-radius: 30rpx;
            font-size: 28rpx;
            font-weight: 600;
            background-color: #fee05a;
        }
    }
}

此时的页面效果:

在下节完成头像、昵称、手机号的获取和生日、性别、地区组件的编写,属实写累了0.0?

文章来源:https://blog.csdn.net/qq_41481924/article/details/135553185
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。