微信小程序授權登陸代碼 前臺

const util = require('./utils/util.js');

const api = require('./utils/api.js');

App({

// onLaunch: function () {

// let that = this;

// util.checkSettingStatu(); //鑑定授權

// that.checkLogin().then(flag => {

// //判定登錄狀態,如果登錄了,則處理

// console.log(flag)

// }).catch((error) => {

// console.log(error);

// that.loginByWeixin().then(res => {

// console.log(res);

// }).catch((err) => {

// console.log(err);

// });

// });

// },

  onLaunch: function () {

 

    let that = this;

    // 展示本地存儲能力

    var logs = wx.getStorageSync('logs') || []

    logs.unshift(Date.now())

    wx.setStorageSync('logs', logs)

    // 登錄

    wx.login({

      success: res => {

        // 發送 res.code 到後臺換取 openId, sessionKey, unionId

        if (res.code) {

          wx.getUserInfo({

            success: resInfo => {

             that.globalData.userInfo = resInfo.userInfo

              //發起網絡請求

              wx.request({

                url: util.host + api.AuthLoginByWeixin,

                method: "POST",

                header: {

                  'content-type': 'application/x-www-form-urlencoded'

                },

                data: {

                  EncryptedDataStr: resInfo.encryptedData,

                  Code: res.code,

                  Iv: resInfo.iv,

                  Sn: " "

                },

                success: function (resInfo_openid) {

                  var data = JSON.parse(resInfo_openid.data);

                  console.log(data);

                  if (data.code == 200){

                    var UserId = data.map.F_Id; //應該會返回unionid

                    var SellerID = data.map.UserId; //應該會返回unionid

                    var dataInfo= JSON.parse(data.data);

                    wx.setStorageSync('UserId', UserId);

                    wx.setStorageSync('SellerId', SellerID);

                    wx.setStorageSync('AvatarUrl', data.map.AvatarUrl);

                    wx.setStorageSync('JoinDate', data.map.JoinDate);

                    wx.setStorageSync('Phone  ', data.map.Phone);

                    wx.setStorageSync('Country', data.map.Country);

                    wx.setStorageSync('Province', data.map.Province);

                    wx.setStorageSync('City', data.map.City);

                    wx.setStorageSync('Gender', data.map.Gender);

                    wx.setStorageSync('NickName', dataInfo.NickName);

                    wx.setStorageSync('Token', data.map.Token);

                    wx.setStorageSync('OpenId', data.map.OpenId);

                    console.log("Token==============" + data.map.Token);

                    console.log("OpenId==============" + data.map.OpenId);

                  }

                  else{

                    console.log("返回代碼:" + data.code + "返回信息:" + data);

                  }

                },

                fail: function (error) {

                  var varError = error;

                }

              })

            },

            fail: function (resInfo) {

              console.log("getUserInfo失敗")

            }

          })

        }

        else {

          console.log('獲取用戶登錄態失敗!' + res.errMsg)

        }

      }

    })

    // 獲取用戶信息

    wx.getSetting({

      success: res => {

 

        if (res.authSetting['scope.userInfo']) {

          // 已經授權,可以直接調用 getUserInfo 獲取頭像暱稱,不會彈框

          wx.getUserInfo({

            success: res => {

              // 可以將 res 發送給後臺解碼出 unionId

              this.globalData.userInfo = res.userInfo

 

              // 由於 getUserInfo 是網絡請求,可能會在 Page.onLoad 之後才返回

              // 所以此處加入 callback 以防止這種情況

              if (that.userInfoReadyCallback) {

                that.userInfoReadyCallback(res)

              }

            }

          })

        }

        else{

// 未授權,跳轉到授權頁面

wx.reLaunch({

url: '/pages/auth/auth',

})

          console.log("沒有授權")

        }

      }

    })

  },

// 登錄

loginByWeixin: function () {

let that = this;

let code = null;

return new Promise(function (resolve, reject) {

return that.login().then((res) => {

// 發送 res.code 到後臺換取 openId, sessionKey, unionId

code = res.code;

return that.getUserInfo();

}).then((userInfo) => {

wx.setStorageSync('weixin', userInfo.userInfo);

that.globalData.weixin = userInfo.userInfo;

util.request(api.AuthLoginByWeixin, {

code: code

}).then(res => {

wx.setStorageSync('wxuserID', data.map.F_Id);

resolve(res);

}).catch((err) => {

reject(err);

});

}).catch((err) => {

reject(err);

})

});

},

//鑑權登錄狀態

checkLogin: function () {

let that = this;

return new Promise(function (resolve, reject) {

if (wx.getStorageSync('weixin')) {

that.checkSession().then((res) => {

resolve(res);

}).catch((err) => {

reject(err);

});

} else {

reject(false);

}

});

},

  //wx.checkSession

checkSession: function () {

return new Promise(function (resolve, reject) {

wx.checkSession({

success: function (res) {

resolve(res);

},

fail: function (err) {

reject(err);

}

})

});

},

  //wx.getUserInfo

getUserInfo: function () {

return new Promise(function (resolve, reject) {

wx.getUserInfo({

withCredentials: true,

success: function (res) {

resolve(res);

},

fail: function (err) {

reject(err);

}

})

});

},

  //wx.login

login: function () {

return new Promise(function (resolve, reject) {

wx.login({

success: function (res) {

if (res.code) {

resolve(res);

} else {

reject(res);

}

},

fail: function (err) {

reject(err);

}

});

});

},

 

globalData: {

weixin: null,

userInfo: null,

        ApiUrl:"https:/api.baidu.com/",

        

},

})

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章