千家信息网

微信小程序登录态和检验注册过没的app.js如何实现

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下微信小程序登录态和检验注册过没的app.js如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!0、可
千家信息网最后更新 2026年11月02日微信小程序登录态和检验注册过没的app.js如何实现

小编给大家分享一下微信小程序登录态和检验注册过没的app.js如何实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

0、可参考的官方页面

获取登录凭证:https://developers.weixin.qq.com/miniprogram/dev/api/wx.login.html
检查登录态是否过期: https://developers.weixin.qq.com/miniprogram/dev/api/wx.checkSession.html

备注:你要明白什么是登录态:这里的登录态是微信小程序自己的登录态,我们可以再自己写个登录页面作为自己的登录态,不过为了用户体验良好我直接以微信登录态做为自己的登录态。所以我的整个小程序是直接自动登录的

注意:微信小程序缓存很容易被清除,所以你必须时刻提防小程序缓存被清除的状态下怎么处理。

备注:我从后台返回来给小程序的对象格式为:

 public ResultCode resultCode; // 业务响应码 public String resultMsg = ""; // 返回信息描述 public String errCode; // 错误代码 public String errCodeDes = ""; // 错误描述 public Object data; // 返回业务数据  public enum ResultCode {  SUCCESS, // 业务处理成功  FAIL; // 业务处理失败 }

1、流程

(1)调用wx.checkSession检查用户登录态是否过期,如果没有过期就检查用户注册没注册①,如果过期了就去重新执行登录流程②

(2)②的流程为:调用wx.login来获取登录凭证(code),然后把code发给后台,后台调用 auth.code2Session,使用 code 换取 openid 等信息来获取openId , 把openId返回给小程序, 然后把openId放到小程序缓存里面,然后检查用户注册没注册①

(3)①的流程为:先从缓存查该用户注册没注册过(通过检查缓存变量registered存不存在),有就是老用户,没有就去后台通过openId查有没有这个用户,把结果返回给小程序,如果后台有这个用户,说明已经注册过,就把在缓存里加个registered并赋值true。

(4)然后我们就可以在其他页面通过registered来判断用户注册没注册过,从而跳转进入注册页面或者是主页

2、app.js代码

App({   globalData: {    serverHost: 'http://localhost:8080', //服务器域名   },   onLaunch: function() {    var that = this;    //检查登录态是否过期    wx.checkSession({     success() {      // session_key 未过期,并且在本生命周期一直有效      console.log("【用户小程序登录态未过期】");      that.isRegister();     },     fail() {      // session_key 已经失效,需要重新执行登录流程      that.wxLogin();     }    })   },   //查看当前用户是否已经注册过   isRegister: function() {    var that = this;    var host = this.globalData.serverHost;    // (先从缓存查该用户,有就是老用户,没有就后台查有没有这个用户,后台查到有这个用户就放缓存,没有就是新用户)    wx.getStorage({     key: 'registered',     success(res) {      console.log("【通过缓存查询到该用户是已经注册过的】");      console.log("【当前用户的openid为:】" + wx.getStorageSync('openid'));     },     fail(res) {      var openid;      openid = wx.getStorageSync('openid');      wx.request({       url: host + '写自己的后台请求检查用户存不存在的URL',       method: 'POST',       data: {        openId: openid,       },       header: {        "Content-Type": "application/x-www-form-urlencoded"       },       success: (res) => {        if (后台返回注册过") {         if (res.data.data) {          console.log("【通过后台查询到该用户已经注册过】");          wx.setStorage({           key: "registered",           data: true          });         } else {          console.log("【通过后台查询到该用户还没注册过】");         }        }       }      })     },    })   },   //该函数用来登录的   wxLogin: function() {    var that = this;    //设置后台host    var host = this.globalData.serverHost;    console.log("【用户重新执行小程序登录流程】");    wx.login({     success(res) {      // 发起网络请求,发送 res.code 到后台换取 openId      if (res.code) {       var code = res.code;       wx.request({        url: host + '写自己后台用code换取OpenId的请求URL',        method: 'POST',        data: {         code: code,        },        header: {         "Content-Type": "application/x-www-form-urlencoded"        },        success: (res) => {         console.log("【获取用户openid成功】");         console.log("【从后台获取到用户openid为】" + res.data.data.openid)         let openId = res.data.data.openid;         wx.setStorage({          key: "openid",          data: res.data.data.openid         });         console.log("【用户openid放入缓存成功】");         that.isRegister();        }       })      }     }    })   }, },})

3、java后台怎么通过code获取openId

import net.sf.json.JSONObject;/** * @author niqinhua * @date 2019/3/8 9:19 */public class WXUtil {  public static JSONObject getOpenidAndSessionKey(String code) {    String url = "https://api.weixin.qq.com/sns/jscode2session";    String param = "appid=写自己的appId&secret=写自己的密钥&js_code=" +         code + "&grant_type=authorization_code";    String wxReturnResult = sendGet(url, param);    JSONObject wxReturnResultObject = JSONObject.fromObject(wxReturnResult);    return wxReturnResultObject;  } /**   * 从规范上,建议把这个方法抽出来放到HttpUtil类里面   * 向指定URL发送GET方法的请求   * @param url 发送请求的URL   * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。   * @return URL 所代表远程资源的响应结果   */  public static String sendGet(String url, String param) {    String result = "";    BufferedReader in = null;    try {      String urlNameString = url + "?" + param;      URL realUrl = new URL(urlNameString);      // 打开和URL之间的连接      URLConnection connection = realUrl.openConnection();      // 设置通用的请求属性      connection.setRequestProperty("accept", "*/*");      connection.setRequestProperty("connection", "Keep-Alive");      connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");      // 建立实际的连接      connection.connect();      // 定义 BufferedReader输入流来读取URL的响应      in = new BufferedReader(new InputStreamReader(          connection.getInputStream()));      String line;      while ((line = in.readLine()) != null) {        result += line;      }    } catch (Exception e) {      System.out.println("【HTTP发送GET请求出现异常】:访问URL:"+url+",错误:"+e.getMessage());    }    // 使用finally块来关闭输入流    finally {      try {        if (in != null) {          in.close();        }      } catch (Exception e2) {        System.out.println("【HTTP请求关闭输入流异常】:访问URL:"+url+",错误:"+e2.getMessage());      }    }    return result;  }}

上面只是工具类直接拿就行,真正业务逻辑要自己写,我只给出重点部分

JSONObject wxReturnJson = WXUtil.getOpenidAndSessionKey(code);if (wxReturnJson.get("errCode")!=null) {  //log.error("【获取用户的openid】【失败】【传递参数code无效】");} else {  //log.info("【获取用户的openid】【成功】【传递参数code无效】");}

以上是"微信小程序登录态和检验注册过没的app.js如何实现"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

用户 登录 后台 程序 缓存 检查 流程 业务 成功 参数 用户注册 错误 页面 就是 篇文章 处理 查询 输入 检验 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网龙头 涨乐互联网科技 互联网 科技公司 艾特科技互联网 美国互联网黑科技 电子科技大学互联网 互联网科技上市公司 互联网科技热点资讯 南山科技园互联网公司有哪些 栖莱科技互联网股份有限公司 互联网科技项目计划书材料类 互联网科技与管理 武汉健翔互联网络科技有限公司 杭州壁岐互联网科技有限公司 南通创西澳互联网科技有限公司 张召忠谈中国互联网科技 广东鹅鹅鹅互联网科技有限公司 盐城市攀科互联网科技有限公司 黑龙江互联网科技公司 前海云享互联网科技 互联网科技资迅 互联网科技开发公司 易通互联网络科技有限公司 金融科技和互联网金融 南山科技园互联网公司有哪些 知域互联网科技有限公司大骗子 群盈汇互联网科技有限公司 有人说阿里系是互联网科技企业 10位科技互联网大佬 上海旺乐尼互联网科技有限公司
0