不看鉅虧~小老弟 通過一年多對微信應用的瞭解 針對系統設計出微信應用架構!!-----微信應用能力篇


管理配置篇如下管理配置篇

微信公衆號

微信公衆號的用戶綁定系統實現

微信公衆號最重要的一個功能就是模板消息推送,但是我微信公衆號有幾個前置條件需要滿足

  1. 有能推送模板消息的公衆號
  2. 有符合合條件的模板
  3. 接收消息人的openid
    其中前兩個點應該是必須要完成的流程 =,所以我們先針對第三點討論具體的實現方式。

多種情況

我們通常會遇到如下兩種情況
(1)不需要與系統用戶進行綁定
(2)需要與系統已有賬號進行關聯綁定
第一種情況不需要我們進行特殊處理只需要根據簡單的把微信用戶信息進行儲存即可,而第二種情況我們需要把微信openid和用戶進行綁定。這裏我們提供2種綁定方式。

數據庫er圖

在這裏插入圖片描述
簡單的通過三張表即能把用戶綁定起來

  1. eagle_user 用戶表 主要儲存用戶的實體信息。
  2. eagle_user_oauth 外部用戶表 主要儲存第三方用戶對接系統時的用戶信息 包括一些配置的 其中third_id儲存open_id。
  3. eagle_user_link 儲存用戶和用戶之間的綁定關係。用戶綁定的實現邏輯既是完善這種表

二維碼綁定

基本思路和流程圖

二維碼綁定的基本邏輯思路,即當用戶已經在系統登錄的情況下,根據當前登錄的用戶信息生成關於本身用戶的公衆號二維碼。二維碼中包含着用戶信息。下圖爲我們系統二維碼綁定的邏輯
在這裏插入圖片描述

實現細節

  1. 生成二維碼
    推薦使用QR_STR_SCENE爲臨時的字符串參數值 這個類型能生成大量的二維碼 雖然不是永久有效但是緩存個一天左右的時間還是沒有問題 當然了用永久二維碼也是可以的但是一個公衆號只有10w個.
    由於二維碼中的內容有長度限制,所以儘量以固定的分隔符進行分開,按照順序進行排列好。這樣在解析的時候纔好把信息解析出來 注 我是以weixin_app_id_scene_user_id 這樣的字符串進行保存的
  2. 搭建接收微信消息的服務器
    通過接收到的消息經過解析之後的內容,做針對的處理
  3. 接收信息
    (1)如果用戶未關注公衆號
    如果用戶未關注過公衆號,用戶掃描二維碼會先去到公衆號展示頁,當用戶點擊其中“關注公衆號”按鈕,微信服務器會通過http請求把該用戶的關注信息傳遞過來 需要關注 EventKey 該字段標識該次請求有場景值帶過來,具體信息爲qrscene_{weixin_app_id}{scene}{user_id} 可以從其中的第一參數判斷用戶是通過掃描二維碼過來的 然後根據第三個參數來判斷改二維碼的具體功能。
    (2)如果用戶已經關注公衆號
    如果用戶關注過公衆號,用戶掃描二維碼會直接去到對話頁,這時候服務器會接收到掃描二維碼的消息,Event字段爲SCAN EventKey爲{weixin_app_id}{scene}{user_id} 這時候通過判斷第二個參數來判斷改二維碼的具體功能
  4. 綁定用戶
    然後通過FromUserName該字段獲取用戶的openid 然後通過該openid創建用戶和用戶第三方配置信息,之後再把二維碼中的用戶信息和該open_id創建的用戶綁定起來這

賬號密碼綁定

基本思路和流程圖

賬號密碼相對思路相對簡單點,提供一個類似登錄頁面的頁面,讓用戶在該頁面輸入賬號密碼。當通過驗證之後把用戶進行綁定即可。如果爲我們公司的綁定流程圖
在這裏插入圖片描述

實現細節

1.推送引導消息
當用戶第一次關注公衆號的時候可以直接給用戶推送相關的綁定的用戶消息,讓用戶直接綁定。
2.提供綁定用戶的菜單項
給微信公衆號的菜單裏添加一項綁定用戶的選項,當用戶點擊菜單的時候,先去騰訊請求相關的微信用戶信息,然後拿掉用戶的openid回跳到相關的綁定頁面。
3.綁定用戶
當用戶通過系統的賬號密碼驗證之後,把通過驗證的用戶和openid生成的用戶綁定在一起。

用戶解綁

用戶綁定完就要有解綁邏輯,該處只討論微信公衆號的解綁邏輯,關於用戶的統一解綁邏輯會在後面進行詳細的解釋

微信公衆號取消關注

基本思路

當用戶取消關注公衆號時,應該爲該用戶進行接觸綁定操作。當用戶點擊取消關注時,微信服務器會發送取消關注消息通知咱們的服務器,這時候能拿到用戶的openid和用戶當前公衆號信息。這時在eagle_user_link裏刪除兩個用戶之間的綁定關係

實現細節

1.接收取消關注消息
當服務器發送Event字段爲unsubscribe的消息時說明用戶取消關注了公衆號,這時通過用戶的openid和公衆號信息確定具體的用戶和公衆號進行解綁操作即可。

統一用戶微信管理

微信應用賬號統一管理中會進行相關的說明

微信公衆號應用oauth鑑權登錄管理

當微信用戶和系統用戶綁定完成之後,既能直接通過微信的oauth鑑權系統直接進行單點登錄,跳過每個需要登錄態的登錄操作。

實現思路

當用戶通過菜單或者模板消息接收到我們推送的網頁地址時,我們都需要給這個地址加加工,讓我們進行跳轉的時候,知道我們是微信跳轉過來,然後去微信那邊獲取用戶的open_id,然後通過open_id和用戶的綁定關係找到具體的用戶,然後進行登錄操作

實現細節

1.加工url
當發送消息或者生成菜單時,通過統一的方法把相關的url進行參數的加工,主要添加如下參數 redirect_domain=offiaccount&app_name=微信應用app_name redirect_domain標識當前url是通過微信應用來的 app_name 標識微信應用是那個應用
2.發送驗證請求
在用戶點擊相關的連接的同時,會先檢測當前用戶是否登錄,如果未登錄過會根據當前請求的具體的地址組裝一個微信用戶的鑑權地址,然後把頁面跳轉到微信的統一驗證地址,當微信驗證地址驗證完畢之後會會把頁面跳轉到相應的頁面。
3.獲取用戶信息並登陸
微信驗證完之後會在頁面上帶入code參數,這時通過code再次請求微信的獲取用戶信息的地址,這時即可獲取微信用戶的openid,這時通過openid獲取對應綁定的用戶即可完成登陸流程。
4.多次回跳的具體的流程圖
在這裏插入圖片描述

微信小程序

企業微信

企業微信下應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章