微信小程序登陆封装
25-04-07 03:25
732
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) } }); }) }, }); });
-
阿里云盘达人计划快速升3级指南
为什么一定要升到3级?有如下优点:1、 立刻获得3T,长达一年的容量2、 每月获得200个福利码,你可以四处发帖。发也是有方法的,在电脑上新... 1319 0 24-05-31 -
全字库正宋体,正楷体
1519 0 24-07-24 -
屏幕截图(FastStone Capture)9.1汉化单文件便携企业版
FastStone Capture 是一款体积小巧、功能强大、简单易用的图像浏览、编辑、捕获和视频录制工具,提供多种捕获方式(如:活动窗口、指定窗... 869 0 24-07-01 -
奈特心脏病学彩色图谱
在过去的半个世纪,心血管疾病的预防、诊断和治疗取得了长足的发展。大量的随机试验,无论是数量上还是规模上均远超其他学科,这使得循证医学... 1242 0 24-06-18 -
Node.js 实战
Node.js是一个非常具有极客精神的技术社区(我更想强调它本身代表的是一个社区,相比之前的一些大语言分支 c/c++/java什么的,那些大语言... 1081 0 24-05-28 -
手机PC兼容JS图片画廊特效,全屏查看图片,滑动缩放
369 0 21-06-02 -
人民好公仆小程序(生活+便民+政务)
"人民好公仆小程序(生活+便民+政务).zip" 这个标题揭示了这个压缩包包含的是一个名为“人民好公仆”的小程序的源码,这款小程序旨在为用... 1105 0 24-10-27 -
ChatPPT: 用AI生成PPT(office插件,目前免费)
PPT可以让AI帮忙辅助了,你不知道么?这就是ChatPPT。下载和安装这款工具。令人惊喜的是,ChatPPT这款工具能够直接内置到PowerPoint中。如... 1995 0 24-08-08
发表我的评论
共0条评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~