网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

微信小程序登錄步驟流程(C#)

發布時間:2018-02-10 10:58 所屬欄目:小程序開發教程


小程序官方文檔中說道:

調用wx.login接口獲取登錄憑證(code)進而換取用戶登錄態信息,包括用戶的唯一標識(openid)及本次登錄的會話密鑰(session_key)。調用wx.getUserInfo接口將返回的數據會包含 encryptedData, iv 等敏感信息。用戶數據的加解密通訊需要依賴會話密鑰完成。

UnionID機制說明:

如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過unionid來區分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的unionid是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應用,unionid是相同的。

小程序登錄主要作用是獲取用戶信息,主要用到兩個API,一個是wx.login獲取用戶的jscode,再通過服務器端用jscode去獲取用戶的openid與session_key。openid是用戶在小程序公眾平臺的唯一標識,注意,是小程序公眾平臺內,而不是所有公眾平臺內,即如果在服務號或訂閱號公眾平臺,就可能會有跟此用戶同樣openid的用戶,如果要微信所有公眾平臺某個用戶的唯一標識,就只能用unionid了。session_key是用戶的密鑰,用于解密用戶敏感數據。另一個wx.getuserInfo就是為了獲取到用戶的加密敏感數據與偏移量iv,偏移量再加上之前的session_key就能解密用戶的敏感數據了。

官方提供的登錄流程圖: 

下面是主要步驟流程:

  • 客戶端調用wx.login獲取code
  • 客戶端調用wx.request請求把code傳到服務器后臺
  • 服務器后臺根據code+appid+appsecret向微信后臺發送請求獲取openid+session_key
  • 服務器后臺隨機生成一個隨機數3rd_session(以硬盤或設置或日期+rand隨機函數生成),以3rd_session為key,openid+session_key為Value存儲起來,并把3rd_session發送至客戶端,3rd_session所起的作用只是為了驗證用戶登錄時的時效是否過期,并不是必須的,如不用驗證登錄是否過期,可不用3rd_session
  • 客戶端獲取到3rd_session后存儲到storage
  • 客戶端調用wx.getUserInfo獲取用戶敏感數據encryptedData和偏移向量IV
  • 客戶端調用wx.request請求把encryptedData+偏移向量iv+3rd_session傳送到服務器后臺
  • 服務器后臺根據3rd_session到緩存中找出session_key
  • 服務器后臺根據session_key+IV解密encryptedData(AES解密三個參數:密文encryptedData,密鑰session_key,偏移向量iv)

步驟流程結合的詳細流程圖: 

小程序客戶端發起的調用:

 

  1. 
    wx.login({
    success: function (res) {
    var jscode = res.code;
    wx.getUserInfo({
    success: function (res) {
    var option = {
    url: config.ghost+config.UrlApi.app_userlogin_url,
    method:'POST',
    data: {
    "obj":{
    "encryptedData": res.encryptedData,
    "iv": res.iv,
    "jscode": jscode
    },
    "UserCode": "",
    "EncryptUserCode": config.gencryptCusCode,
    "AppType":config.gapptype,
    "CompanyKey":config.gcompanyKey,
    "ShopID":config.gshopID
    }
    };
    utils.ClientRequest(option,
    function (res) {
    console.log(res);
    if(res.data.Body.Code=="1"){
    //成功
    var resData = res.data.Body.Data;
    //初始化
    that.setConfigUser(resData);
    //把Clientkey存緩存
    storage.setStorageData(config.storageKey.Userkey,resData.clientkey);
    } else{
    console.log(res);
    wx.navigateTo({url: "../loginfail/loginfail"});
    }
    },
    function (res) {
    console.log(res);
    wx.navigateTo({url: "../loginfail/loginfail"});
    }
    );
    },
    fail: function () { // 拒絕操作
    wx.naviga 


易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/21916.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×