小程序app.js
app.js
1 import { 2 ApiUrl 3 } from 'utils/apiurl.js'; 4 import { 5 httpReq 6 } from 'utils/http.js'; 7 /*以上兩個文件為封裝的請求數據的接口,文件內容我會放在最后,不用這倆文件的可以安裝wx.request(微信開發文檔提供方法來請求),這兩個文件也是在原方法上做了改動但效果一樣的, 8 */ 9 App({ 10 onLaunch: function () { 11 var logs = wx.getStorageSync('logs') || []// 12 logs.unshift(Date.now()) 13 /*unshift() 方法將把它的參數插入 arrayObject 的頭部,並將已經存在的元素順次地移到較高的下標處,以便留出空間。該方法的第一個參數將成為數組的新元素 0,如果還有第二個參數,它將成為新的元素 1,以此類推。 14 */ 15 wx.setStorageSync('logs', logs)// 根據時間存儲log 16 17 // 登錄 18 wx.login({ 19 success: res => { 20 /* 發送 res.code 到后台換取 token,openId, sessionKey, unionId(都可以獲取,和后端商議選擇其中需要的獲取並使用) 21 */ 22 if(res.code) { 23 //發起網絡請求 24 httpReq({ 25 header: { 26 //此處為示例header內容,寫自己項目的即可 27 'Content-Type': 'application/json', 28 'Accept': 'application/json' 29 }, 30 method: 'GET', 31 /* url: 'https://api.weixin.qq.com/sns/jscode2session?appid=wxf7a9fda47682a9a6&secret=cc74bba5adfa5e077038c5cb8baca13c&js_code='+ res.code+'&grant_type=authorization_code' 32 */ 33 url: ApiUrl.phplist + 'index/gettoken?code=' + res.code, 34 /*上面第一個url為前端直接繞過后端去微信請求拿到openid和session_key,主要是當時拿不到數據和后端爭論故自己直接拿證明自己前端沒有錯,你們還是正常用下面的后端請求到的就可以了。 35 */ 36 }).then((res) =>{ 37 wx.setStorageSync(res.data.lists.token) 38 /*此處后端要求我們拿token在其他頁面使用說是為了安全,他的意思是說我剛剛自己繞過他去微信那邊直接拿了openid和session_key不安全,我?????,只能現在按他的做了,其他頁面需要openid時再傳給他token換取。 39 */ 40 }) 41 } else { 42 console.log('登錄失敗' + res.errMsg) 43 } 44 } 45 }) 46 47 // 獲取用戶信息 48 wx.getSetting({ 49 success: res => { 50 if (res.authSetting['scope.userInfo']) { 51 // 已經授權,可以直接調用 getUserInfo 獲取頭像昵稱,不會彈框 52 wx.getUserInfo({ 53 success: res => { 54 this.globalData.userInfo = res.userInfo 55 56 /*此處是可以直接獲取到你微信個人賬號信息的,就是圖像,昵稱,性別,省份,城市等之類的,如果是電話,具體地址等私密信息是要額外授權才能獲取的,由於 getUserInfo 是網絡請求,可能會在 Page.onLoad 之后才返回. 57 所以此處加入 callback 以防止這種情況*/ 58 if (this.userInfoReadyCallback) { 59 this.userInfoReadyCallback(res) 60 } 61 }, 62 fail: function(res) {} 63 }) 64 } else { 65 wx.showModal({ 66 title: '警告通知', 67 content: '您點擊了拒絕授權,將無法正常顯示個人信息,在設置中確定重新獲取授權。', 68 }) 69 } 70 }, 71 fail: function(res) {} 72 }) 73 }, 74 globalData: { 75 userInfo: null, 76 } 77 })
apiurl.js
1 let ApiUrl = {}; 2 // php列表 3 ApiUrl.phplist = 'http://www.ylb.com/api/'; 4 5 // 詳細信息 6 ApiUrl.detail = ApiUrl.phplist+'/'; 7 8 export {ApiUrl};
http.js
1 function httpReq(params = {}){ 2 let url = params.url || 'http://www.ylb.com'; 3 let data = params.data || ''; 4 let header = params.header || {}; 5 let method = params.method || 'GET'; 6 7 // 使用Promise來解決異步問題 8 return new Promise((resolve, reject) => { 9 // 發起網絡請求 10 wx.request({ 11 url, 12 data, 13 header, 14 method, 15 16 // 成功 17 success: resolve, 18 19 // 失敗 20 fail: reject 21 }) 22 }) 23 } 24 // 導出模塊 25 export {httpReq};
以上僅為小女子做項目時的一些理解與記錄,初次接觸小程序,僅供大家參考,歡迎各位大佬指正,代碼各種問題都可以留言聯系我,你主動,我們才有故事。