微信小程序开发—从零开始,登录没有session ,cookie的解决方法的尝试,同步异步,解决,

背景:接到领导要求开发一个微信小程序,客户需要,经过一个礼拜左右的时间,基本算是可用状态

重难点:没有session ,cookie之类的,用来存储网站全局的,登录用户信息,

官方推荐是用wx.setStorageAysc()即将登录后的用户信息存储到本地数据缓存,

但是有个bug,有些机型会莫名其妙丢失缓存,即丢失自动登录信息,相见官方社区:

https://developers.weixin.qq.com/community/develop/doc/000c6e85794ac04b73b81364851000

稳妥起见,个人解决方法:

在程序启动或是进入前台时,检测能否获取到值,即是否失效,

失效重新请求获取登录相关信息,个人为了保险起见,又设置全局变量,双重保障存放,

登录用户的个人信息,代码见第二步:小白

ps进入前台,即打开小程序界面,

有图有真相

 针对小白请看第一步,否则直接跳到第二步:

现在总结过程:需要开通微信开发平台账号,安全认证过的https:开头的安全域名

第一步:配置如下:appsecret ,业务域名,

可理解是小程序的后台数据的服务接口,打通微信小程序和公司服务器数据库,本质是服务器跨域互相调用信息

可理解是小程序的后台数据的服务接口,打通微信小程序和公司服务器数据库,本质是服务器跨域互相调用信息

可理解是小程序的后台数据的服务接口,打通微信小程序和公司服务器数据库,本质是服务器跨域互相调用信息

注意事项:

服务器域名要是https:安全认证,同时需要TLS为2.0以上,不大理解,没关系,配置好

微信请求,根据错误一步步解决就好,百度都有,

阿里云服务器,有提供网站免费安全证书,可以申请

至于TSL2.0升级,网络上有文件

如下

第二步:进行登录获取openid,等用户信息,存放在本地缓存,和全局变量中,方便其他页面,调用

全局app.js文件如下:公司项目,需要绑定其他项目用户个人信息

App({
  //扫码进来,不知道是否启动,暂时不管
  onLaunch: function () {
    // 展示本地存储能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs);
    //本地测试方便之用
    if ((!this.globalData.workno) || (!wx.getStorageSync("workno"))) {
      wx.login({
        success: res=>{
          if (res.code) {
            wx.request({
              url: 'https://www.xxx.cn/yxyj.ashx?Method=getopenid&appid=wx****************&secret=***&js_code=' + res.code + '&grant_type=authorization_code' + '&launch=true',
              success: result=>{
                var res = result.data[0];
                var that=this;
                res.openid != null ? (that.globalData.openid = res.openid, wx.setStorageSync('openid', res.openid)) : '';
                res.WorkNO != null ? (that.globalData.workno = res.WorkNO, wx.setStorageSync('workno', res.WorkNO)) : '';
                res.NetworkNO != null ? (that.globalData.networkno = res.NetworkNO, wx.setStorageSync('networkno', res.NetworkNO)) : '';
                res.RealName != null ? (that.globalData.realname = res.RealName, wx.setStorageSync('realname', res.RealName)) : '';
                res.RoleName != null ? (that.globalData.rolename = res.RoleName, wx.setStorageSync('rolename', res.RoleName)) : '';
                res.UserType != null ? (that.globalData.usertype = res.UserType, wx.setStorageSync('usertype', res.UserType)) : '';
                res.BankSear != null ? (that.globalData.banksear = res.BankSear, wx.setStorageSync('banksear', res.BankSear)) : '';
                that.globalData.userData = true;
                //由于这里是网络请求,可能会在 Page.onLoad 之后才返回  所以此处加入 callback 以防止这种情况
                if (this.userDataCallback) {
                  this.userDataCallback(result);
                }
              }
            })
          } else {
            conso1e.log('获取用户登录态失败!' + res.errM3g)
          }
        }
      });
    }

注意事项:

第一点:

考虑全局变量,获取登录用户,相关信息时,一定要确保是在使用之前调用, 即

考虑全局变量,获取登录用户,相关信息时,一定要确保是在使用之前调用, 即

考虑全局变量,获取登录用户,相关信息时,一定要确保是在使用之前调用, 即

同步异步问题,如上所示:如果后执行,存在回调函数,执行回调函数,

if (this.userDataCallback) {

this.userDataCallback(result);

}

第二点:

es6中有箭头函数,区别一般函数,可以确保this,总是指向定义对象的,

res=>{}

success: result => {

var res = result.data[0];

var that = this;

}

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序是一种基于微信平台的应用程序,可以在微信中直接使用,而无需下载安装。学习微信小程序开发需要一些基础的前端知识,下面是一个从零开始学习微信小程序开发的步骤: 1. 学习HTML、CSS和JavaScript:微信小程序的前端部分主要使用HTML、CSS和JavaScript来实现页面结构、样式和交互逻辑,因此你需要有一定的前端基础。 2. 下载并安装微信开发者工具:微信提供了专门用于小程序开发开发者工具,你可以在微信公众平台的官网下载并安装。 3. 注册小程序账号:在微信公众平台上注册一个小程序账号,通过审核后你就可以开始开发小程序了。 4. 创建项目:打开微信开发者工具,使用小程序账号登录,并创建一个新的小程序项目。 5. 编写代码:在开发者工具中,你可以使用类似于前端开发的方式编写小程序的页面结构、样式和逻辑。可以参考微信小程序官方文档和教程来学习如何编写代码。 6. 调试和预览:在开发者工具中,你可以进行实时的调试和预览,查看小程序的效果并进行调试。 7. 发布小程序:当你开发完成后,可以提交小程序进行审核,并在审核通过后发布小程序。 在学习的过程中,你还可以参考一些优秀的教程和案例,例如微信小程序官方文档、微信小程序开发社区、相关的书籍和在线教程等。通过不断的实践和学习,你可以逐渐掌握微信小程序开发的技巧和经验。祝你学习顺利!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值