在首頁判斷是否登入並執行登陸

JoeYoung發表於2019-04-08

首頁先判斷是否登入

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 }) } }) },

 

相關文章