1. 首页
  2. 小程序开发
  3. 正文

微信小程序开发中的登录状态的一些代码分析

  众所周知,用户在打开微信小程序的时候,我们可以使用小程序自带的静默登录代码,获取用户的openid的,现在就分析来小程序的登录代码该如何写,才能确定的实现小程序的登录状态的功能。

  首先,判断小程序的用户有没有登录成功(包括静默登录),可以以下的代码来实现,如下图所示:


  讲一下这个方法的原理,获取用户的session3rd,如果session3rd为等于undefined或空,则表示用户尚未登录,这时我们可以使用静默登录的方法来获取用户的session3rd,也就是login(app),如下图所示:


  如果session3rd是存在的,则仍需要验证session3rd是否有效,如果无效,则又得重新调用login(app)方法重新登录。

  在静默登录方法执行后,可根据返回的code值,获取会员的信息,如以下代码所示:


  这样就完整的获取用户的登录状态了。下面还有一种,就是用户打开这个小程序的页面,但该页面必须获取头像和昵称才能查看,否则跳转到用户登录页面(用户可拒绝,拒绝后跳回首页),这里出现了一个问题,由于小程序JS运行的顺序,在我们获取用户的session3rd过程中,会直接用这个session3rd获取用户的昵称和头像,造成了session3rd为空或undefined的情况,调用获取用户信息的接口,所以在需要额外写两个方法,一个是在登录的情况用

  check_login(app,that) ,然后在session3rd有效的情况调用用户信息的接口,如下图所示:


  二是在session3rd无效的情况,用login_do(app, code,that) 方法,在wx.setStorageSync('session3rd', res_login.data.data.session3rd)里会获取到用户的session3rd,然后接口获取用户信息的接口。


  顺便说一下,方法里包含的that参数,指的就是用户打开的小程序页面。

    延伸阅读

  • 推广引流方法有哪些,裂变营销什么意思

    推广引流方法有哪些,裂变营销什么意思除了各公域平台,另一个比较重要的引流场景,就是在微信中。一方面做信社交性强,对于身边用友的链接更紧密,微信上也会以群、公众号的形式聚集一群有...

  • 小红书引流推广怎么做,小红书引流的最快方法是什么

    做小红书要九浅一深,为什么你的小红书没有流量呢?因为你很有可能被判为营销号,不要以为只有个人号才会判定你为营销号,企业号也会这样子。原因很简单,小红书必竟是一个内容分享平台,是...

  • 外贸英文网站建设怎么做?

    1、规划和设计确定网站的目标、目标受众和关键信息。设计网站结构和页面布局,包括主页、产品展示页面、联系方式等。以纺织服装行业为例,考虑到时尚和审美特点,英文网站建设设计风格应该...

  • SEO套餐的生产与加工

    任何一件事情都可以独立分割成一个完整的体系,运用程序化和步骤化加工的方法实现快速无限复制和粘贴今天我们就来分解SEO套餐在“流水线”上的生产与加工:一、前端/页编人员二、内容编...

  • 2024网络营销怎么做?ai自媒体矩阵助力企业“降本增效”

    在2024年,随着人工智能技术的快速发展,网络营销正在经历着前所未有的变革。企业需要寻找新的营销方式来提高营销效果,降低营销成本。AI自媒体矩阵成为了企业“降本增效”的新选择。...

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.lnbdc.com/article/5017.html

(function(){ var src = (document.location.protocol == "http:") ? "http://js.passport.qihucdn.com/11.0.1.js?1d7dde81dc0903e04d3ac0b9599444f6":"https://jspassport.ssl.qhimg.com/11.0.1.js?1d7dde81dc0903e04d3ac0b9599444f6"; document.write('<\/mip-script>'); })(); (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();