首頁先判斷是否登錄
index.wxml
<!-- 判斷是否登錄 --> <modal class="modal" hidden="{{is_login}}" no-cancel bindconfirm="close" confirmText=" "> <view class="dew"> <image src='/images/login.png' /> <button class='bottom' type='primary' open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo"> 請您授權登錄,否則無法正常操作 </button> </view> </modal>
index.js
var api = require('../../api.js');
var app = getApp();
Page({ /** * 頁面的初始數據 */ data: { //判斷小程序的API,回調,參數,組件等是否在當前版本可用。 canIUse: wx.canIUse('button.open-type.getUserInfo'), is_login:true }, /** * 生命周期函數--監聽頁面加載 */ onLoad: function (options) {// 查看是否授權 wx.getSetting({ success: function (res) { if (!res.authSetting['scope.userInfo']) { that.setData({ is_login: false }) } } }) }, //執行登陸 bindGetUserInfo: function (e) { if (e.detail.userInfo) { //用戶按了允許授權按鈕 var that = this; //插入登錄的用戶的相關信息到數據庫 var openid = getApp().globalData.openid; getApp().globalData.userInfo = e.detail.userInfo; // console.log(getApp().globalData.userInfo) wx.request({ url: api.wx.UserLogin, data: { userinfo: e.detail.userInfo, openid: openid }, header: { 'content-type': 'application/json' // 默認值 }, method: 'post', success(res) { if (res.data.result == 1) { wx.switchTab({ url: '/pages/index/index' }) that.setData({ is_login: true }) } else { console.log("寫入失敗") } } }) //授權成功后,跳轉進入小程序首頁 } else { //用戶按了拒絕按鈕 wx.showModal({ title: '警告', content: '您點擊了拒絕授權,將無法進入小程序,請授權之后再進入!!!', showCancel: false, confirmText: '返回授權', success: function (res) { if (res.confirm) { console.log('用戶點擊了“返回授權”') } } }) } }, })
app.js
onLaunch: function () { var that = this; wx.login({ success: res => { wx.request({ url: api.wx.jsCode + '?jsCode=' + res.code, data: { }, success: res => { var obj = {}; obj.openid = res.data.openid; ... wx.setStorageSync('user', obj); //存儲openid } }) } }); },
獲取用戶手機號:
index.wxml
<modal class="modal" hidden="{{is_login}}" no-cancel bindconfirm="close" confirmText=" ">
<view class="dew">
<image src='/images/login.png' />
<button class='bottom' type='primary' open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">
請您授權登錄,否則無法正常操作
</button>
</view>
</modal>
index.js
/** * 生命周期函數--監聽頁面加載 */ onLoad: function (options) { var that = this; ... //是否登錄 if (!fzuser){ that.setData({ is_login: false }) } }, //獲取用戶手機號 getPhoneNumber: function (e) { var that = this; console.log(e) if (e.detail.errMsg == 'getPhoneNumber:fail user deny' || e.detail.encryptedData == null || e.detail.iv == null) { wx.showModal({ title: '提示', showCancel: false, content: '未授權,您不能使用服務!', success: function (res) { console.log(res) } }) } else { ... wx.request({ url:api.wx.UserLogin, data: { encryptedData: e.detail.encryptedData, sessionKey: user.session_key, iv: e.detail.iv, openid: openid, version: api.wx.version, }, method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT success: function (res) { console.log(res); ... that.setData({ is_login: true }) } }); } }, /** * 生命周期函數--監聽頁面顯示 */ onShow: function () { var that = this; ...
//驗證登錄是否過期 wx.checkSession({ success() { // session_key 未過期,並且在本生命周期一直有效 console.log('登錄未過期') }, fail() { // session_key 已經失效,需要重新執行登錄流程 // wx.login() // 重新登錄 that.setData({ is_login: false }) } }) },