微信小程序(六)小程序获取用户信息

如题所述

第1个回答  2024-09-04

小程序获取用户信息这部分其实不难,但是,他有点麻烦。

最开始,在小程序的app.js中的onlaunch中判断如果当前登录用户,数据库中没有用户信息,则直接调用wx.getUserInfo,弹窗获取用户信息。

但是小程序改版之后,不支持这种调用方式,官方给出的demo是使用一个button按钮来调起wx.getUserInfo这个方法来获取用户信息。

用习惯了弹窗的我,突然碰到这种方式还有点不习惯,那玩意就一个按钮,用户岂不是点不点都行了?

后来一寻思,这不死心眼了么,弹窗改按钮,其实道理上是一样的。

弹窗是判断没有用户信息弹窗

按钮,那你就判断没有用户信息,调转到一个只有获取信息按钮的页面,让他点,不点授权就用不了不就完了么。

类似我这样:

授权的代码就很简单了,新建项目的时候,示例程序已经给你带了:我这里放一下的页面的示例:

Im.js

//pages/im/im.js//获取应用实例constapp=getApp();Page({/***页面的初始数据*/data:{//是否显示授权isHide:false,//用户iduser_id:'',//用户头像figureurl_wx:'',nickname:'',//是否显示is_show:0,},/***生命周期函数--监听页面加载*/onLoad:function(options){},/***生命周期函数--监听页面初次渲染完成*/onReady:function(){},/***生命周期函数--监听页面显示*/onShow:function(){varself=this;//底部自定义菜单显示if(typeofthis.getTabBar==='function'&&this.getTabBar()){this.getTabBar().setData({selected:1//根据tab的索引值设置})}varself=this;self.getUseridFromStorage();self.setData({is_show:self.data.is_show});},/***生命周期函数--监听页面隐藏*/onHide:function(){},/***生命周期函数--监听页面卸载*/onUnload:function(){},/***页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh:function(){},/***页面上拉触底事件的处理函数*/onReachBottom:function(){},/***用户点击右上角分享*/onShareAppMessage:function(){},/***从缓存中获取用户信息*/getUseridFromStorage:function(){varself=this;//从缓存中获取用户idwx.getStorage({key:'userinfo',success(res){self.data.user_id=res.data.id;self.data.figureurl_wx=res.data.figureurl_wx;self.data.is_show=res.data.is_show;self.data.nickname=res.data.nickname;//判断当前用户是否授权,没授权显示授权页面if(self.data.figureurl_wx==''){self.data.isHide=true;}else{self.data.isHide=false;}self.setData({isHide:self.data.isHide});}});},/***更新用户缓存*/updateUserinfo:function(obj){varself=this;//同步更新缓存wx.setStorage({key:"userinfo",data:obj});//异步获取缓存self.getUseridFromStorage();},/***点击用户授权*/getUserInfo:function(e){varself=this;//点击了拒绝if(e.detail.errMsg=="getUserInfo:failauthdeny"){wx.showToast({title:'请您授权!',icon:'loading',//图标,支持"success"、"loading"//image:'/images/load.gif',duration:1500,//提示的延迟时间,单位毫秒,默认:1500mask:true,//是否显示透明蒙层,防止触摸穿透,默认:false});return;}varuserinfo=e.detail.userInfo//从storage中获取用户信息wx.getStorage({key:'userinfo',success(res){//请求后台接口完善个人信息wx.request({//请求连接url:'xxxxxxxx',//请求所需要的的参数data:{data:userinfo,user_id:res.data.id},success(result){self.updateUserinfo(result.data.userinfo);}});}})app.globalData.userInfo=e.detail.userInfo},/***AI聊天跳页*/jumpToAiChat:function(){//清除聊天缓存wx.removeStorage({key:'newsList',success:function(res){},});letjumpUrl="../aichat/aichat?openid="+this.data.nickname+'&&figureurl_wx='+this.data.figureurl_wx;this.jumpPage(jumpUrl);},})

Im.wxml

<!--pages/im/im.wxml--><!--微信授权页面--><viewwx:if="{{isHide}}"><viewclass='header'><imagesrc='https://guanchao.site/uploads/website/5c093bf268185.png'></image></view><viewclass='content'><view>时间里的申请获取以下权限</view><text>获得你的公开信息(昵称、头像、地区及性别)</text></view><buttonclass='bottom'open-type="getUserInfo"lang="zh_CN"bindgetuserinfo="getUserInfo">授权登录</button></view><!--正常页面,使用if-else控制--><viewwx:elseclass="containertop_view"><viewclass="button_view"bindtap="jumpToAiChat">AI聊天</view><viewclass="button_viewmargin10"bindtap="jumpToLiveChat">即时聊天</view><viewclass="button_viewmargin10"bindtap="jumpToLiveGame">即时猜拳</view></view>

Im.wxss

/*pages/im/im.wxss*//*登录授权部分*/.pageld{/*width:100%;*//*height:95%;*//*background-color:#F2F2F2;*//*margin-top:-45px;*/}.header{margin:90rpx090rpx50rpx;border-bottom:1pxsolid#ccc;text-align:center;width:650rpx;height:300rpx;line-height:450rpx;}.headerimage{width:200rpx;height:200rpx;}.content{margin-left:50rpx;margin-bottom:90rpx;}.contenttext{display:block;color:#9d9d9d;margin-top:40rpx;}.bottom{border-radius:20rpx;margin:70rpx50rpx;font-size:35rpx;background-color:#31869B;color:white;}/*列表按钮部分*/.top_view{margin-top:70px;font-weight:bold;}.button_view{height:25px;padding:8px;padding-left:50px;padding-right:50px;cursor:pointer;background-color:#31869B;color:#FFFFFF;border:1pxsolid#31869B;border-radius:6px;width:150px;text-align:center;}.margin10{margin-top:30px;}

以上就是我在上边动图中的页面的所有代码。很简单,有需要的同学可以参照一下。

有好的建议,请在下方输入你的评论。

欢迎访问个人博客:https://guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

原文:https://juejin.cn/post/7103281504444219406

logo设计

创造品牌价值

¥500元起

APP开发

量身定制,源码交付

¥2000元起

商标注册

一个好品牌从商标开始

¥1480元起

公司注册

注册公司全程代办

¥0元起

    官方电话官方服务
      官方网站八戒财税知识产权八戒服务商企业需求数字市场
相似回答
大家正在搜