• 小程序 之登录 wx.login()


    小程序的登录关键在于使用wx.login()方法后,要到取到code值传到后台,

    再用小程序平台本帐号生成的appid+addsecret+code去微信接口服务取得用户唯一标识后即可登录【注意:此步骤必须要在本项目后台服务中才能成功,在小程序端是无效的】

    appid+addsecret

    下图是官方的登录流程图:

    放上代码

    showTopTips:function(e){ //登录/注册提交事件
        if (userName==''){
          app.toastShow(this, "请输入手机号", "error");
        } else if (userPassword==''){
          app.toastShow(this, "请输入验证码", "error");
        }else{
          var that = this
          wx.login({//调用获取用户openId
            success: function (res) {
              var loginDevice = 'W'; //唯一标识 = W + 临时code值
              loginDevice = loginDevice + res.code //临时code值
              var appid = '1100310183560349'; //appid wxf79825c96701f981
              var timestamp = Date.parse(new Date());//获取当前时间戳 
              timestamp = timestamp / 1000;
              var version = '1.0'; //版本号
              var sign = 'erwlkrjlkwjelrjwlke'; //签名
              var timestamp = Date.parse(new Date());//获取当前时间戳 
              timestamp = timestamp / 1000;
              var loginChannel = '1003'; //登录渠道:1001 ios手机 1002 android手机 1003 微信小程序 1004 手机H5
              wx.request({
                method: "post",
                url: 'http://uat.*****.com/xiao***/user/baseInfo/userLogin', //仅为示例,并非真实的接口地址
                data: '{"appId": "' + appid + '", "timestamp": ' + timestamp + ', "version": "' + version + '", "sign": "' + sign + '", "mobile": "' + userName + '","validateCode":"' + userPassword + '","loginChannel":"' + loginChannel + '","loginDevice":"' + loginDevice + '",}@#@1100310183560349' //"validateWay": 1, "validateType": 2
                ,
                dataType: "json",
                header: {
                  'content-type': 'application/json' // 默认值
                },
                success: function (res) {
                  var userIdEnc = res.data.data.userIdEnc;  //用户唯一标识
                  var loginDevice = res.data.data.loginDevice;
                  wx.setStorageSync('userIdEnc', userIdEnc); //将userIdEnc存入本地缓存
                  wx.setStorageSync('loginDevice', loginDevice);//将loginDevice存入本地缓存
                
                  that.redirectToIndex();
    
                  // that.setData({
                  //   id_token: res.data.id_token,
                  //   response: res
                  // })
                  // try {
                  //   wx.setStorageSync('id_token', res.data.id_token)
                  // } catch (e) {
                  // }
    
    
                  if (res.code == '0000') {
                    console.log("注册成功");
                    // wx.redirectTo({
                    //   url: '../../pages/index/index',
                    // })
                  } else if (res.code == '1002') { //超时
                    that.errorShow('超时');
                  } else if (res.code == '1002') { //帐号冻结
                    that.errorShow('帐号冻结');
                  } else {  //失败
                    that.errorShow('注册/登录失败');
                  }
    
                },
                fail: function (res) {
                  //console.log(res.data);
                  console.log('is failed')
                }
              })
    
    
    
            }, fail: function (res) {
              console.log('获取临时code失败!' + res.errMsg)
            }
          })
          
        }
      },
  • 相关阅读:
    php 获取完整url地址
    Apache Module mod_reqtimeout
    How To Mitigate Slow HTTP DoS Attacks in Apache HTTP Server
    IE8/IE9/IE10打开网页后,自动设置浏览器模式为“IE8/IE9/IE10兼容性视图”
    关于Slow HTTP Denial of Service Attack slowhttptest的几种慢攻击DOS原理
    apache slowloris mod_antiloris for Apache httpd 2.2 / 2.4
    jquery.min.js v1.10.3版本autocomplete方法会在text前添加搜索出多少项的文本信息 要去除
    Tiling_easy version
    "巴卡斯杯" 中国大学生程序设计竞赛
    人见人爱A+B
  • 原文地址:https://www.cnblogs.com/zhixi/p/9671172.html
Copyright © 2020-2023  润新知