欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

小程序中用戶登錄狀態(tài)檢查與更新的示例分析

這篇文章主要介紹小程序中用戶登錄狀態(tài)檢查與更新的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于網(wǎng)站建設、網(wǎng)站設計、冊亨網(wǎng)絡推廣、微信平臺小程序開發(fā)、冊亨網(wǎng)絡營銷、冊亨企業(yè)策劃、冊亨品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供冊亨建站搭建服務,24小時服務熱線:028-86922220,官方網(wǎng)址:aaarwkj.com

將這個部分單獨作為一篇文章有兩個原因:

① wx.getUserInfo(OBJECT) 接口調(diào)整,廢棄了以前直接獲取用戶信息的方法;

② 上篇文章授權、登錄、session_key、unionId 只梳理了登錄流程而沒有貼實際的代碼,所以這篇文章以代碼實現(xiàn)為主。

1. 代碼邏輯分析

(1)用戶登錄態(tài)過期時間如何設置?

在上篇文章中也有提到過,用戶登錄態(tài)可以通過前端設置和后端設置兩種方式進行控制。這里我們在前端進行控制,即利用wx.checkSession() 接口來判斷session_key 是否過期來作為用戶登錄態(tài)是否過期的標志。如果過期了,則跳轉到統(tǒng)一的登錄頁面引導用戶點擊按鈕重新授權登錄,重新登錄之后session_key 會刷新,相當于在獲取用戶最新信息的同時重新設定了過期時間。

(2)onShow() 與onLoad()

小程序js 中有onShow 與onLoad 兩種事件。兩種事件的區(qū)別就在于onLoad 每次打開小程序只加載一次,跳轉到其他頁面再回來的時候這個事件就不會再觸發(fā)。而onShow 則每次進入頁面都會觸發(fā),所以我們在進入每個頁面檢查用戶登錄態(tài)是否過期的代碼需要放在onShow 中。

(3)重新登錄過程分析

如果用戶登錄態(tài)過期,則需要進行重新登錄。登錄過程在上篇文章中也有講過。這里再簡單梳理一下:前端引導用戶點擊按鈕觸發(fā)getUserInfo 獲取最新用戶信息 -> 前端調(diào)用wx.login() 獲取code -> 前端將code 發(fā)送給后端獲取openid 和seesion_key -> 后端寫session 并返回對應session 的唯一標志 -> 前端存儲這個唯一標志。

2. 代碼實例

在每個頁面的onShow 事件中添加以下代碼來檢查當前用戶登錄態(tài)是否過期:

wx.checkSession({
 success: function () {
 //session_key 未過期,并且在本生命周期一直有效
 return ;
 },
 fail: function () {
 // session_key 已經(jīng)失效,需要重新執(zhí)行登錄流程
 wx.navigateTo({
  url: "/pages/authorize/index"
 })
 }
})

因為進入每個頁面中都需要進行用戶登錄態(tài)是否過期的檢查,所以需要有一個公共的授權頁面,當檢查不同過的時候,就跳轉到這個授權頁面引導用戶重新進行授權,授權頁面authorize 代碼如下:

wxml

<view class="container">
 <view style='width:100%;padding-left:30rpx;font-size: 28rpx;margin-top:30rpx;'>1、同意當前小程序獲取我的微信頭像;</view>
 <view style='width:100%;padding-left:30rpx;font-size: 28rpx;margin-top:30rpx;'>2、同意當前小程序獲取我的微信昵稱等其他信息;</view>
 <button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" class="save-btn">授權登錄</button>
</view>

wxss

page{
 height: 100%;
}
.container{
 background-color: #f5f5f9;
 justify-content: initial;
}
.save-btn{
 width: 690rpx;
 height: 80rpx;
 line-height: 80rpx;
 text-align: center;
 margin-top:30rpx; 
 border-radius: 6rpx;
 box-sizing: border-box;
 background-color: #e64340;
 color:#fff;
}

js

// pages/authorize/index.js
var app = getApp();
let Domain = app.globalData.domain;
Page({
 
 /**
 * 頁面的初始數(shù)據(jù)
 */
 data: { },
 
 /**
 * 生命周期函數(shù)--監(jiān)聽頁面加載
 */
 onLoad: function (options) { },
 
 /**
 * 生命周期函數(shù)--監(jiān)聽頁面初次渲染完成
 */
 onReady: function () { },
 
 /**
 * 生命周期函數(shù)--監(jiān)聽頁面顯示
 */
 onShow: function () { },
 
 /**
 * 生命周期函數(shù)--監(jiān)聽頁面隱藏
 */
 onHide: function () { },
 
 /**
 * 生命周期函數(shù)--監(jiān)聽頁面卸載
 */
 onUnload: function () { },
 
 /**
 * 頁面相關事件處理函數(shù)--監(jiān)聽用戶下拉動作
 */
 onPullDownRefresh: function () { },
 
 /**
 * 頁面上拉觸底事件的處理函數(shù)
 */
 onReachBottom: function () { },
 
 /**
 * 用戶點擊右上角分享
 */
 onShareAppMessage: function () { },
 bindGetUserInfo: function (e) {
 // 獲得最新的用戶信息
 if (!e.detail.userInfo){
  return;
 }
 wx.setStorageSync('userInfo', e.detail.userInfo)
 this.checkSessionAndLogin();
 },
 /* 
 這里使用openid 作為與后端session 連接的標志
 檢查是否存在openid,即之前是否登錄過
  如果登錄過,檢查session_key 是否過期
  如果過期了,remove openid 重新執(zhí)行l(wèi)ogin 并將用戶信息發(fā)送到服務器端更新
  如果沒過期則返回
  如果沒登錄過則執(zhí)行l(wèi)ogin 并將用戶信息發(fā)送到服務器更新
 */
 checkSessionAndLogin: function () {
 let that = this;
 let thisOpenId = wx.getStorageSync('openid');
 
 // 已經(jīng)進行了登錄,檢查登錄是否過期
 if (thisOpenId) {
  console.log('have openid')
  wx.checkSession({
  success: function () {
   //session_key 未過期,并且在本生命周期一直有效
   wx.navigateBack({});
  },
  fail: function () {
   console.log('but session_key expired');
   // session_key 已經(jīng)失效,需要重新執(zhí)行登錄流程
   wx.removeStorageSync('openid');
   that.checkSessionAndLogin();
  }
  })
 } else {
  // 沒有進行登錄則先進行登錄操作
  console.log('do not have openid');
  that.loginAndGetOpenid();
 }
 },
 // 執(zhí)行登錄操作并獲取用戶openId
 loginAndGetOpenid: function () {
 console.log('do login and get openid');
 let that = this;
 wx.login({
  success: function (res) {
  if (res.code) {
   wx.request({
   url: Domain + '/user/wx_login',
   data: {
    code: res.code
   },
   success: function (res) {
    res = res.data;
    console.log(res)
    // 保存openId,并將用戶信息發(fā)送給后端
    if (res.code === 0) {
    wx.showModal({
     title: 'set openid',
     content: res.data,
    })
    wx.setStorageSync('openid', res.data);
    that.sendUserInfoToServer();
    } else {
    wx.showModal({
     title: 'Sorry',
     content: '用戶登錄失敗~',
    })
    }
   }
   })
  }
  }
 })
 },
 sendUserInfoToServer: function () {
 
 console.log('now send user info to server');
 let userInfo = wx.getStorageSync('userInfo');
 let thisOpenId = wx.getStorageSync('openid');
 
 userInfo.openid =thisOpenId;
 
 wx.request({
  url: Domain + '/user/updateUser',
  method: 'POST',
  dataType: 'json',
  data: userInfo,
  success: function (res) {
  res = res.data;
  if (res.code === 0) {
   wx.navigateBack({});
  } else {
   wx.showModal({
   title: 'Sorry',
   content: '同步信息出錯~',
   })
  }
  }
 })
 }
})

以上是“小程序中用戶登錄狀態(tài)檢查與更新的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

當前名稱:小程序中用戶登錄狀態(tài)檢查與更新的示例分析
分享網(wǎng)址:http://aaarwkj.com/article30/pjcdso.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、定制開發(fā)、虛擬主機、自適應網(wǎng)站、標簽優(yōu)化、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
91九色视频官网在线观看| 亚洲国产日韩精品av| 国产免费av高清在线| 日韩中字伦理熟妇人妻| 国产91日韩欧美在线观看 | 蜜桃福利视频一区二区| 在线观看男人的天堂av| 日韩av在线国产观看| 国产三级黄色大片在线免费看| 乱色视频中文字幕在线着| 欧美一区二区三区十区| 亚洲综合欧美自偷自拍| 一区二区三区四区中文在线| 久久精品国产亚洲av麻| 最近中文字幕免费手机版| 国内午夜福利精品视频| 国产传媒剧情剧资源网站| 加勒比av免费在线播放| 日本熟女俱乐部一区二区| 欧美精品一区二区久久| 日本韩国欧美一区二区在线| 久久视热频这里只有精品| 亚洲邻家人妻一区二区| 婷婷久久五月综合激情| 中文字幕人妻日韩在线| 亚洲国产精品一区二区三区| 91精品夜夜夜一区二区| 亚洲福利网址一二三区| 丰满少妇被激烈的插进去| 欧美中日韩一区二区三区| 日韩亚洲欧洲一区二区三区| 亚洲综合中文字幕精品| 97久久精品国产成人影院| 亚洲av午夜福利麻豆av | 日本不卡免费一区二区视频| 国产精品伊人久久精品| 黄片免费在线播放欧美| 老色鬼久久亚洲av综合| 国产性做爰片免费网站| 91九色国产在线播放| 免费在线观看一区二区三区视频|