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

news2024/11/15 17:33:57

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

小程序昵称头像在之前的版本获取规则为触发后弹出用户授权弹窗,授权后可直接获取用户头像和昵称,但是在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 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1380757.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DCP文件传输的重要性与应用

在数字时代&#xff0c;文件传输已成为商业运作中不可或缺的一环。随着企业越来越多地采用云基础设施和服务&#xff0c;有效地在云和团队之间传输大文件和数据集变得至关重要。在这一背景下&#xff0c;数据复制协议&#xff08;DCP&#xff09;文件传输应运而生&#xff0c;引…

Web实战丨基于django+html+css+js的电子商务网站

文章目录 写在前面实验目标需求分析实验内容安装依赖库1.登陆界面2.注册界面3.电子商城界面4.其他界面 运行结果写在后面 写在前面 本期内容&#xff1a;基于DjangoHTMLCSSJS的电子商务网站 实验环境&#xff1a; vscode或pycharmpython(3.11.4)django 代码下载地址&#x…

【分布式技术】监控平台zabbix介绍与部署

目录 一、为什么要做监控&#xff1f; 二、zabbix是什么&#xff1f; 三、zabbix有哪些组件&#xff1f; ​编辑Zabbix 6.0 功能组件&#xff1a; ●Zabbix Server ●数据库 ●Web 界面 ●Zabbix Agent ●Zabbix Proxy ●Java Gateway 四、zabbix的工作原理&#xf…

GNSS差分码偏差(DCB)原理学习与数据下载地址

一、DCB原理 GNSS差分码偏差&#xff08;DCB&#xff0c;Differential Code Bias&#xff09;是由不同类型的GNSS信号在卫星和接收机不同通道产生的时间延迟&#xff08;硬件延迟/码偏差&#xff09;差异&#xff0c;按照频率相同或者不同又可以细分为频内偏差&#xff08;例如…

PADS9.5 : 元件库绘制

元件库绘制 1、打开PADS LOGIC 软件 2、先开始元件的电参数 这理面我们只需要先关注&#xff1a; 门 &#xff0c;就是当前画的元件有几个部分 示例&#xff1a;两个门&#xff1a;A、B 3、再开始编辑图形 选择创建2D线&#xff0c;绘制PARTA 外框 添加端点&#xff0c;就是接…

生态茶园建设方案——福建蜂窝物联

一、项目背景 为了进一步提高茶产业集约化、产业化发展水平&#xff0c;充分运用物联网、互联网等高新技术为产业赋能&#xff0c;加速推动安溪茶产业转型升级&#xff0c;县政府决定在安溪县推进“安溪智慧生态茶园项目”&#xff0c;并以茶叶重镇感德镇实施“安溪智慧生态茶园…

CRM-如何做好客户管理

客户是企业最重要的资源&#xff0c;也是客户360视图管理的主数据&#xff0c;企业的运转都是围绕客户来开展的&#xff0c;如何做好客户数据的管理是一门学问&#xff0c;也需要企业动态的调整战略。 客户分为企业客户&#xff08;Account&#xff09;与个人客户&#xff08;…

图解智慧:数据可视化如何助你高效洞悉信息?

在信息爆炸的时代&#xff0c;数据扮演着越来越重要的角色&#xff0c;而数据可视化则成为解读和理解海量数据的得力工具。那么&#xff0c;数据可视化是如何帮助我们高效了解数据的呢&#xff1f;下面我就以可视化从业者的角度来简单聊聊这个话题。 无需深奥的专业知识&#x…

环信服务端下载消息文件---菜鸟教程

前言 在服务端&#xff0c;下载消息文件是一个重要的功能。它允许您从服务器端获取并保存聊天消息、文件等数据&#xff0c;以便在本地进行进一步的处理和分析。本指南将指导您完成环信服务端下载消息文件的步骤。 环信服务端下载消息文件是指在环信服务端上&#xff0c;通过调…

实用编程调试技巧

目录 一、调试的基本步骤 二、Debug和Release的介绍 三、Windows环境调试介绍 1.调试环境的准备 2.学会快捷键 最常用的几个快捷键&#xff1a; 断点应用举例&#xff1a; 3.调试的时候查看程序当前信息 &#xff08;1&#xff09…

橘子学Spring01之spring的那些工厂和门面使用

一、Spring的工厂体系 我们先来说一下spring的工厂体系(也称之为容器)&#xff0c;得益于大佬们对于单一职责模式的坚决贯彻&#xff0c;在十几年以来spring的发展路上&#xff0c;扩展出来大量的工厂类&#xff0c;每一个工厂类都承担着自己的功能(其实就是有对应的方法实现)…

redis高级篇之单线程和多线程

目录 1、redis的发展史 2、redis为什么选择单线程&#xff1f; 3、主线程和Io线程是怎么协作完成请求处理的&#xff1f; 4、IO多路复用 5、开启redis多线程 1、redis的发展史 Redis4.0之前是用的单线程&#xff0c;4.0以后逐渐支持多线程 Redis4.0之前一直采用单线程的主…

智慧农业大棚建设方案——福建蜂窝物联

一、项目背景 温室大棚在不适宜植物生长的季节&#xff0c;能提供生育期和增加产量&#xff0c;多用于低温季节喜温蔬菜、花卉、林木等植物栽培或育苗等。因此对种植作物生长环境的要求要精确的多。 大多数农户加温、浇水、通风等&#xff0c;全凭感觉。人感觉冷了就加温&#…

Netfilter 是如何工作的(六):连接跟踪信息的入口创建(in)和出口确认(confirm)

Articles (gitee.io) IPtables-朱双印博客 (zsythink.net) 在 Netfilter 是如何工作的(五) 中连接跟踪信息使用的创建-确认机制的 Netfilter在报文进入系统的入口处&#xff0c;将连接跟踪信息记录在报文上&#xff0c;在出口进行confirm.确认后的连接信息 本文以一个本机上送…

【LeetCode每日一题】2182. 构造限制重复的字符串

2024-1-13 文章目录 [2182. 构造限制重复的字符串](https://leetcode.cn/problems/construct-string-with-repeat-limit/)思路&#xff1a; 2182. 构造限制重复的字符串 思路&#xff1a; 按照字符出现次数从高到低的顺序进行重复&#xff0c;通过维护一个指针 j 来寻找下一个…

如何在你的网站接入QQ登录?

文章目录 准备阶段申请QQ登录的权限创建应用最后上传qqlogin.php代码 准备阶段 国内服务器和备案域名需要你有张独一无二本人的身份证你正面手持身份证的图片一张100px*100px的网站图标 申请QQ登录的权限 首先访问qq互联&#xff0c;点击我直接访问 登陆完成后我们点击面的…

Java判断字符串当中是否有中文符号(不是中文名称,是符号)

public static void main(String[] args) throws ParseException, IOException, URISyntaxException {// 测试示例String testString1 "Hello,test&#xff01;";String testString2 "This is a test.";boolean result1 containsChineseSymbols(testStr…

又涨了:net的域名铁定涨价

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 又要涨价了&#xff0c;又要涨价了&#xff0c;又要涨价了!继.com域名涨价后&#xff0c;.net的域名也逐步涨价。最近一年来域名疯狂涨价&#xff0c;几个月内已经几乎翻番。 阿里云2月1日起上调.net英文域名价格…

专业课148,总分410+电子科技大学858信号与系统考研经验电子信息与通信

今年专业课148分&#xff0c;总分410顺利被电子科技大学录取&#xff0c;回望这一年复习还有很多不足&#xff0c;总结一下自己的复习经历&#xff0c;希望对大家复习有所帮助。 数学&#xff1a;&#xff08;多动手&#xff0c;多计算&#xff0c;多总结&#xff0c;打好基础…

YOLOv8改进:小目标涨点系列篇 | UNet v2 多层次特征融合模块结合DualConv、GSConv

🚀🚀🚀本文改进:多层次特征融合(SDI)结合DualConv、GSConv模块等实现二次创新 🚀🚀🚀SDI 亲测在多个数据集能够实现涨点,同样适用于小目标检测 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到创新,轻轻松松搞定科研…