uniapp关闭小程序就退出登录 admin 2023-06-01 10:21:02 篇首语:本文由小编为大家整理,主要介绍了uniapp关闭小程序就退出登录相关的知识,希望对你有一定的参考价值。 参考技术A 要实现这个需求,你可以在小程序页面的 onUnload 生命周期方法中调用退出登录的接口。其实现具体步骤如下:1. 在 app.vue 中监听小程序的 onHide 生命周期事件,并设置一个标志变量 isHideApp。```onHide() this.isHideApp = true;,```2. 在需要退出登录的页面的 onUnload 生命周期事件中判断 isHideApp 是否为 true,如果是,则调用退出登录接口。```onUnload() if (this.isHideApp) // 调用退出登录接口 ,```3. 在退出登录接口中,清除登录状态和用户信息等缓存信息。```logout() // 清除缓存信息 uni.removeStorageSync("token") uni.removeStorageSync("userInfo") // 跳转到登录页 uni.reLaunch( url: "/pages/login/login" ),```通过这种方式,当用户关闭小程序时,可以自动退出登录,从而保证用户信息的安全性。 nS.JSzhuoeR.Comuniapp,实现微信小程序登录,python登录接口的实现 前言 在开发小程序过程中,可能会遇到需要兼容多个平台的情况,uniapp大家就可以去研究一下。当然,如果只是开发单一平台,也可用对应平台的开发工具就足够了。 nS.JSzhuoeR.Com这里我们使用uniapp开发一次,同时兼容微信小程序,qq小程序,h5,app。 主要说一下微信的登录,因为微信的调整,getUserInfo接口不再支持返回用户详细信息。只返回openid,因此,需要先保存openid,之后用户授权才能保存其他数据。 前端 在app.vue,插入如下代码。 nS.JSzhuoeR.ComonLaunch: function() uni.showLoading( title: "正在登录中" ); let that = this uni.getProvider( service: "oauth", success: function(res) console.log(res) if (~res.provider.indexOf("weixin")) uni.login( provider: "weixin", success: (res2) => uni.getUserInfo( success: (info) => //这里请求接口 uni.request( url: that.$host + "login", data: "js_code": res2.code, "encryptedData": info .encryptedData, "iv": info.iv, "provider": "weixin", , method: "GET", success(res) that.globalData.openid = res.data.openid ); uni.hideLoading(); , fail: () => uni.showToast( title: "微信登录授权失败", icon: "none" ); ) , fail: () => uni.showToast( title: "微信登录授权失败", icon: "none" ); ) else console.log("跳过") ); , 后端 后端需要对微信的数据进行解密处理,并储存,返回openid,作为后续用户数据唯一标识。 login.py from flask import Flask, jsonify,requestimport requestsfrom WXBizDataCrypt import WXBizDataCryptapp = Flask(__name__)app.config.from_pyfile("config.config")db.init_app(app)@app.route("/login",methods=["GET"])def login(): js_code=request.args.get("js_code") provider=request.args.get("provider") if provider=="weixin": encryptedData = request.args.get("encryptedData") iv = request.args.get("iv") appid = ""#需要填写自己的 secret = ""#需要填写自己的 response=requests.get("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code"%(appid,secret,js_code)) sk=response.json() pc = WXBizDataCrypt(appid, sk["session_key"]) info=pc.decrypt(encryptedData, iv)-----------分界线:下面为储存用户信息过程,根据需要了解(储存流程,如果是第一次没有查询到用户信息,则储存openid等,如果有用户信息了,就判断昵称和头像等不等于现在最新的数据,如果都等于就不处理,如果其中一个不相等,然后判断是否有更新过或者是否语言为空,如果是,则更新。最后返回json数据openid)--------------- pn = wz_user.query.filter(wz_user.open_id == sk["openid"]).first() if pn == None: pr = wz_user(sk["openid"], info["nickName"], info["province"], info["avatarUrl"], info["city"], info["country"], info["gender"], info["language"],0) db.session.add(pr) db.session.commit() elif pn.nick_name!=info["nickName"] or pn.avatar_url!=info["avatarUrl"]: if pn.is_update==0 or pn.language=="": wz_user.query.filter(wz_user.open_id==sk["openid"] ).update(wz_user.nick_name:info["nickName"],wz_user.avatar_url:info["avatarUrl"], wz_user.province:info["province"], wz_user.city:info["city"],wz_user.country:info["country"], wz_user.gender:info["gender"],wz_user.language:info["language"],wz_user.is_update:1) db.session.flush() db.session.commit() return jsonify("massage":"登录成功","openid":sk["openid"]) 微信解密方法: WXBizDataCrypt.py 需要安装pycrypto模块,pip install pycrypto import base64import jsonfrom Crypto.Cipher import AESclass WXBizDataCrypt: def __init__(self, appId, sessionKey): self.appId = appId self.sessionKey = sessionKey def decrypt(self, encryptedData, iv): # base64 decode sessionKey = base64.b64decode(self.sessionKey) encryptedData = base64.b64decode(encryptedData) iv = base64.b64decode(iv) cipher = AES.new(sessionKey, AES.MODE_CBC, iv) decrypted = json.loads(self._unpad(cipher.decrypt(encryptedData))) if decrypted["watermark"]["appid"] != self.appId: raise Exception("Invalid Buffer") return decrypted def _unpad(self, s): return s[:-ord(s[len(s)-1:])] 这样,我们前端,和后端都搞定了。以上是关于uniapp关闭小程序就退出登录的主要内容,如果未能解决你的问题,请参考以下文章 swift-associatedtype关键字 清除Visual Studio Code的工作区缓存 您可能还会对下面的文章感兴趣: 相关文章 商丘私人空放联系方式_基本资料审核后快速就能放款平台 济宁私人借钱24小时在线,5万以上级别的贷款|无抵押个人借贷|秒下| 湖州空放私借2小时放款—身无分文借贷100%直接放款 宜昌纯私人放款微信电话——马上为您安排信贷服务+当日到账 蚌埠24小时私人放款联系方式随借随到-做生意借贷|应急周转|大额优先| 遵义空放借钱贷款联系电话:走投无路申请放款马上就到账 绵阳专业空放贷款私人联系方式,不看过往|先贷后放|马上拿钱| 德州附近个人放款电话号码多少:不审核+随借随还+当日成功+直接到账