微信小程序 app.js(2)

app.js小程序的主入口文件 在这里引入文件需要的全局js文件

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.login

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

猜你喜欢

转载自my.oschina.net/u/3392853/blog/1612658