1.微信怎么退出程序
在微信界面中点击右上角的三点按钮以打开菜单,在出现的菜单列表中选择“设置”菜单。在设置界面有很多设置选项,其中一项就是“退出”功能项。
点击“退出”选项,此时不是直接地退出程序,也不是退出微信帐号,而是弹出一个窗口菜单。点击界面中的“关闭微信”,这样您就能够成功退出微信。
除此之外,您还可以进入系统设置界面中退出微信,打开设置界面并定位到“应用程序”界面。在此界面中找到“微信”并点击,然后点击“强制停止”按钮退出微信。
2.微信小程序退出账号怎么实现
微信小程序退出账号的前提条件是用户已登陆,且在前端页面和后端服务已记录了用户的登陆状态。
退出登陆的操作,相当于清除用户登陆状态的操作。因此微信小程序实现退出账号的具体流程包括以下几点:1、用户登陆操作:(1)微信小程序调用wx.login获取登录凭证(code)。
(2) 将code传递到后端服务,通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid),并生成与用户一一对应的token值,保存起来,用作用户身份的校验,同时返回给微信小程序客户端。(3)微信小程序获取到token令牌,保存到本地,即可作为已登陆状态的凭证。
前端代码为:const login = function () {。wx.showloading({ title: '登陆中' })。
wx.login().then(res => {。if (res.errmsg === 'login:ok') {。
api.login(res.code).then(data => {。wx.hideloading()。
wx.setstoragesync('token', data) })。}})}。
后端服务代码为:async login(jscode) {。const { ctx, app } = this。
const appid = app.config.miniprogram.appid。const secret = app.config.miniprogram.appsecret。
const url = `/sns/jscode2session。appid=${appid}&secret=${secret}&js_code=${jscode}&grant_type=authorization_code`。
const res = await ctx.curl(url, { method: 'get', datatype: 'json' })。const openid = res.data.openid。
const session_key = res.data.session_key。const str = await app.redis.get(openid)。
if (str && json.parse(str).accesstoken) { // 已登陆。const oldaccesstoken = json.parse(str).accesstoken。
await app.redis.del(oldaccesstoken)。// 删除token,实现单点登陆。
await app.redis.del(openid)。}。
const accesstoken = await ctx.helper.createwxtoken(openid, session_key)。// 生成新的token。
return accesstoken。}。
2、退出登陆操作:(1)点击“退出账号”按钮,调用ajax请求后端退出登陆接口并传递用户token,若退出成功,则清除当前用户登陆状态和token信息。(2)刷新当前页面数据,清除页面上的用户信息。
(3)后端api接收到客户端传递的用户token,查询数据库判断用户是否已登陆,若登陆,则删除或将token置为无效。前端代码为:const logout = function () {。
wx.showloading({ title: '退出登陆中' })。const token = wx.getstoragesync('token')。
api.logout({ token: token }).then(data => {。wx.hideloading()。
wx.removestoragesync('token')。refreshpagedata()。
})}。后端代码为:async logout(accesstoken) {。
const { ctx, app } = this。const userid = await app.redis.get(accesstoken)。
if (。userid) ctx.throw(400, '登陆状态已失效')。
await app.redis.del(userid)。// 删除userid。
await app.redis.del(accesstoken)。// 删除token。