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服務器