微信小程序登錄流程


先從我們的小程序代碼開始


這是我們小程序的代碼結構,登錄的主要功能在login.js中

簡單的說一下我們小程序的js代碼登錄流程

login ->獲取code ->getUserInfo獲取iv和encryptedData ->傳給自己的服務器處理 ->返回給小程序結果

var API_URL = "自己的服務器地址";
Page({
  onLoad: function () {
  console.log("iv");
  wx.login({//login流程
  success: function (res) {//登錄成功
    if (res.code) {
      var code = res.code;
      wx.getUserInfo({//getUserInfo流程
        success: function (res2) {//獲取userinfo成功
        console.log(res2);
        var encryptedData = encodeURIComponent(res2.encryptedData);//一定要把加密串轉成URI編碼
          var iv = res2.iv;
          //請求自己的服務器
         Login(code,encryptedData,iv);
        }
      })

    } else {
      console.log('獲取用戶登錄態失敗!' + res.errMsg)
    }
  }
});
  • code:服務器用來獲取sessionKey的必要參數。
  • IV:加密算法的初始向量,encryptedData:加密過的字符串

把code iv encryptedData 傳遞給我們的服務器

function  Login(code,encryptedData,iv){     console.log('code='+code+'&encryptedData='+encryptedData+'&iv='+iv);
 //創建一個dialog
          wx.showToast({
            title: '正在登錄...',
            icon: 'loading',
            duration: 10000
          });
          //請求服務器
          wx.request({
            url: API_URL,
            data: {
              code:code,
              encryptedData:encryptedData,
              iv:iv
            },
            method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
            header: {
              'content-type': 'application/json'
            }, // 設置請求的 header
            success: function (res) {
              // success
              wx.hideToast();
              console.log('服務器返回'+res.data);

            },
            fail: function () {
              // fail
              // wx.hideToast();
            },
            complete: function () {
              // complete
            }
          })
  }

看文檔的話,應該知道,我們所需要的unionId就在encryptedData中,所以服務器需要這些信息來把unionId解析出來。

服務器處理邏輯

先下載微信的解密demo

 


這里寫圖片描述


這里我選擇的是PHP代碼,把除了demo外的三個class文件,放入我們自己的項目,以后后面調用。

這里講解一下服務器的處理流程:
通過微信的https://api.weixin.qq.com/sns/jscode2session 接口獲取seesionKey,然后在通過sessionKey和iv來解密encryptedData數據獲取UnionID。
具體文檔 : https://mp.weixin.qq.com/debug/wxadoc/dev/api/signature.html?t=20161122

根據官方文檔給的demo進行處理。

原文地址:https://phperzh.com/articles/1207


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM