这里是我自己整理的一些资料,大家不懂的可以相互学习呀。。。

微信小程序 – 用户登陆

小程序 ZZT 1789次浏览 已收录 0个评论

用户登陆

//import { resolve } from "dns";

var app = getApp();
function auth(callback=null,data={}){ //用户登陆
  wx.login({
    success:function(res){
      var code = res.code;
      wx.getUserInfo({
        success: function (res) {
          //console.log(res);
          wx.request({
            url: app.globalData.domain + 'api/user/auth',
            method: "POST",
            data: { code: code, encrypted: res.encryptedData, iv: res.iv },
            success: function (res) {
              if(res.statusCode==200 && res.data.data.token){//成功响应
                app.globalData.userToken = res.data.data.token;
                wx.setStorage({ key: 'userToken', data: res.data.data.token });
                if(callback!==null){
                  callback(data.url,data.callback,data.data,data.method,data.loading);
                }
              }else{ //非正确响应
                wx.showModal({
                    title:"提示",
                    content:"登陆授权失败,请点击确定重新授权登陆!",
                    success:function(res){
                      if(res.confirm){
                        auth(callback,data);
                      }
                    }
                });
              }
            },
            fail:function(res){
              wx.showModal({
                title:"提示",
                content:"登陆授权失败,请点击确定重新授权登陆!(错误:"+res.statusCode+")",
                success:function(res){
                  if(res.confirm){
                    auth(callback,data);
                  }
                }
              });
            }
          });
        },
        fail:function(res){
          wx.showModal({
            title: '提示',
            content: '若不授权微信登陆,则无法正常使用微信小程序。请点击重新授权!',
            success:function(res){
              if(res.confirm){

                wx.openSetting({
                  success:function(res){
                    console.log(res);
                    if (!res.authSetting["scope.userInfo"] || !res.authSetting["scope.userLocation"]) {
                      //这里是授权成功之后 填写你重新获取数据的js
                      wx.getUserInfo({
                        withCredentials: false,
                        success: function (res) { //重新获取token
                          wx.request({
                            url: app.globalData.domain + 'api/user/auth',
                            method: "POST",
                            data: { code: code, encrypted: res.encryptedData, iv: res.iv },
                            success: function (res) {
                              if(res.statusCode==200){
                                app.globalData.userToken = res.data.data.token;
                                wx.setStorage({ key: 'userToken', data: res.data.data.token });
                                if(callback!==null){
                                  callback(data.url,data.callback,data.data,data.method,data.loading);
                                }
                              }
                            }
                          });
                          // if (res.statusCode == 200) {
                          //   app.globalData.userToken = res.data.data.token;
                          //   app.globalData.userRefreshToken = res.data.data.refresh_token;
                          //   wx.setStorage({key:'userToken', data:res.data.data.token});
                          //   wx.setStorage({key:'userRefreshToken', data:res.data.data.refresh_token});
                          // }
                        },
                        fail: function () {
                          console.info("授权失败返回数据");
                        }
                      });
                    }
                  }
                });
              }
            }
          })
        }
      })
    }
  });

}

function httpRequest(url, callback, data = {},method='POST',loading=true,loadingTitle='数据加载中。。。'){//数据请求
  var token = app.globalData.userToken;
  if(loading === true){
    wx.showToast({
      title: loadingTitle,
      icon:'loading'
    });
  }
  var header = {'content-type': 'application/json', 'token' : token};
   wx.request({
     url: app.globalData.domain + url,
     data:data,
     header:header,
     method:method,
     success:function(res){
       console.log(res);
       if (res.data.status_code == 1000){//未登录或者token过期
              auth(httpRequest,{url:url,callback:callback,data:data,method:method,loading:loading});
              return false;
          }
          callback(res.data);
     },
     fail:function(){
       if(loading === true){
         wx.showModal({
           title:"提示",
           content:'请求有误!',
           showCancel:false,
         });
       }
     },
     complete:function(){
       if(loading===true){
         wx.hideToast();
       }
     }
   })
}



module.exports = {
  auth: auth,
  httpRequest: httpRequest
}



乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明微信小程序 – 用户登陆
喜欢 (0)

文章评论已关闭!