微信小程序登陆封装
25-04-07 03:25
758
0
index.wxml
<!-- 登陆组件弹窗 --> <van-popup show="{{ loginBtn }}" round position="bottom" custom-style="height: 24%" bind:close="onClose" duration="246"> <view class="loginPanel"> <view class="panel-title">我想要你的头像和昵称,可以嘛~</view> <view class="panel-btns"> <van-button type="info" round bind:click="onClose">不可以</van-button> <van-button type="primary" round bind:click="_login">好的</van-button> </view> </view> </van-popup> <!-- 内容 --> <block wx:if="{{!loginShow}}"> <view class="loginok"> <view>韩小韩博客 wwww.vvhan.com</view> <view>登录成功</view> <image src="{{userInfo.avatarUrl}}" mode="widthFix" /> <view>Nick:{{userInfo.nickName}}</view> <view>OpenId:{{userInfo.openid}}</view> </view> </block> <block wx:else> <van-button class="loginbtn" plain type="info" bind:click="onClose">点击登录</van-button> </block>
index.js
const app = getApp(); Page({ data: { // 登陆按钮现实隐藏 loginBtn: false, // 全局是否登陆 loginShow: false, // 用户信息 userInfo: {} }, async onLoad() { const _res = await app._checkLogin(); this.setData({ loginBtn: _res, loginShow: _res, userInfo: app.globalData.userInfo }); }, // 登陆 async _login() { const _res = await app._getUserInfo(); _res && this.setData({ userInfo: app.globalData.userInfo, loginBtn: false }), this.onLoad(); }, // 关闭登陆弹窗 onClose(e) { this.setData({ loginBtn: e.type == "click" ? !this.data.loginBtn : false }); } });
app.js
App({ onLaunch: function () { // 全局变量 this.globalData = { openId: wx.getStorageSync('openId'), userInfo: wx.getStorageSync('userInfo') }; if (!wx.cloud) { console.error('请使用 2.2.3 或以上的基础库以使用云能力'); } else { wx.cloud.init({ // env 参数说明: // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源 // 此处请填入环境 ID, 环境 ID 可打开云控制台查看 // 如不填则使用默认环境(第一个创建的环境) // env: 'my-env-id', traceUser: true, }); } // 微信小程序获取版本更新 const updateManager = wx.getUpdateManager() updateManager.onCheckForUpdate(function (res) { // 请求完新版本信息的回调 }) updateManager.onUpdateReady(function () { wx.showModal({ title: '小韩提示', content: '新版来袭,速来体验!', success: function (res) { if (res.confirm) { updateManager.applyUpdate() } } }) }) updateManager.onUpdateFailed(function () { // 新版本下载失败 }); // 获取OpedId this._getOpenId() }, // 获取用户OpenId _getOpenId() { ((this.globalData.openId || '') == '') && wx.cloud.callFunction({ name: 'login' }).then(res => { this.globalData.openId = res.result.openid; wx.setStorageSync('openId', res.result.openid) }).catch(res => { console.error(res) }); }, // 判断是否登陆 async _checkLogin() { const _this = this return new Promise((resolve) => { wx.checkSession({ success: function (_res) { const _userInfo = wx.getStorageSync('userInfo'); resolve((_userInfo || '') === '') }, fail: async function (_res) { await wx.login({}) resolve(true) } }) }) }, // 获取用户信息并存储 async _getUserInfo() { return new Promise((resolve) => { wx.getUserProfile({ desc: 'get用户信息', success: async res => { res.userInfo.openid = this.globalData.openId this.globalData.userInfo = res.userInfo wx.setStorageSync('userInfo', res.userInfo) resolve(true) }, fail: () => { resolve(false) } }); }) }, }); });
-
Node.js 在前端工程化和后端服务应用的区别
在前端工程师眼里,工程化最重要的就是 Webpack 工具,而 Webpack 核心是基于 Node.js 来运行的,当然还有其他场景比如说 SSR 的实... 993 0 24-05-24 -
js文字图片滚动效果
343 0 21-06-02 -
备忘录小程序
该项目是一个简易备忘录,会拥有记录文字、计时和提醒的基本功能等,该小程序只有一个页面,整体简约便捷,用户可以输入相关事件,并设立时... 839 0 24-11-04 -
饿了吗小程序
随着微信小程序的迅速发展与普及,外卖、点餐小程序越来越多地被使用,它不像APP那样全面,有非常复杂的功能,而是提供了快速购物的通道,... 807 0 24-09-19 -
教师资格证考试与教学能力
2015年-2016年教师资格考试高中数学试题及答案.pdf2016下半年教师资格证《英语学科知识与能力(高级中学)》真题及答案.docx2016年教师资格证... 833 0 24-08-19 -
30天自制操作系统
也许很多人觉得编写操作系统是个天方夜谭,这一定是操作系统业界的一个阴谋(笑)。他们故意让大家相信编写操作系统是一件非常困难的事情,... 1306 0 24-05-24 -
口腔执业医师(2019)-笔试基础学习笔记
2019口腔执业医师《卫生法规》考纲.doc2019年医师资格考试考生指导手册.pdf2019年口腔执业医师《专业综合》考试大纲.docx2019年口腔执业医... 1032 0 24-08-20 -
微信小程序自用Tree树形控件
功能包含全选按钮功能、反选按钮功能 父级列表前的开关 icon 子级列表的选中的禁止或启用 父级列表显示子级列表可选数量 父级下... 708 0 25-04-07
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~