微信小程序 app.js(2)

app.js小程序的主入口文件 在這裏引入文件須要的全局js文件html

var Api = require('utils/api.js');//接口
var util = require('utils/util.js');//工具類
var wxApi = require('utils/wxApi.js')
var wxRequest = require('utils/wxRequest.js')

主入口js處理登陸問題小程序

App({
  globalData: {//全局變量
    userInfo: null,
    unionId: ''
  },
  onLaunch: function () {
    // 打開調試
    //wx.setEnableDebug({
      //enableDebug: true
    //})
    // 展現本地存儲能力
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登陸
    //wxml文件,弄一個button按鈕便可
    //在console控制檯查看數據
    //調用登陸接口

    wx.login({
      success: function (login) {
        //成功,返回登陸憑證js_code
        var js_code = login.code;
        var session_key;
        console.log("js_code=" + js_code);
        wx.request({
          url: 'https://api.weixin.qq.com/sns/jscode2session',
          data: {
            grant_type: 'e',
            js_code: js_code,
            appid: '',
            secret: ''
          },
          success: function (data) {
            //debugger;
            session_key = data.data.session_key;
            //調用獲取用戶信息接口
            wx.getUserInfo({
              data: {
                withCredentials: true
              },
              success: function (res) {
                //成功,獲取解密相關的用戶信息
                var encryptedData = res.encryptedData; //AES密文
                var iv = res.iv; //AES初始向量
                //調用網絡請求接口
                //把js_code、AES密文、AES初始向量發送到服務器
                var getUserEncryptedDataParmare = {
                  sessionKey: session_key,
                  encryptedData: encryptedData,
                  iv: iv
                };
                var getPostsRequest = wxRequest.getRequest(Api.getUserEncryptedData(), getUserEncryptedDataParmare);
                //debugger;
                getPostsRequest.then(response => {
                  if (response.data.code == '200') {
                    //debugger;       
                    //成功,返回解密後的用戶敏感信息
                    console.log(response.data);
                    //debugger;
                    var body = response.data.body;
                    var obj = JSON.parse(body);
                    var unionId = obj.unionId;
                    console.log(unionId);
                    //請求三方登錄接口
                    var getLoginThirdPartyParmare = {
                      thirdPartyId: unionId,
                      type: 0
                    };
                    var getLoginThirdPartyRequest = wxRequest.postRequest(Api.loginThirdParty(), getLoginThirdPartyParmare);
                    getLoginThirdPartyRequest.then(response => {
                      console.log(response.data);
                      //debugger;
                      var user = response.data.body.user;
                      console.log(user);
                      wx.setStorage({
                        key: 'user',
                        data: user,
                      })

                      wx.getStorage({
                        key: 'user',
                        success: function (res) {
                          console.log("暱稱:"+res.data.nickName);
                        },
                      })

                      //this.globalData.userInfo = user;

                    })

                  }
                })
              }
            })
          }
        })


      }
    });
   
    // 獲取用戶信息
    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 (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })
  }
 
})

微信登陸wx.loginapi

https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxloginobject wxchecksessionobject https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html#wxchecksessionobject 用戶數據的簽名驗證和加解密 https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html 微信受權wx.authorize https://mp.weixin.qq.com/debug/wxadoc/dev/api/authorize.html#wxauthorizeobject 用戶信息 https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html#wxgetuserinfoobject服務器

相關文章
相關標籤/搜索