微信公眾號與小程序數據互通


  背景

  最近做了一個有意思的功能《官網內容訂閱》,用戶在官網掃碼后可以訂閱官網欄目,訂閱欄目后發送模版消息提醒用戶訂閱成功,模版消息關聯了小程序,然后做了一個小程序來管理用戶訂閱的欄目,小程序提供訂閱和新聞列表閱讀功能。

  實現技術調研分析

  通過背景描述我們知道需要實現兩塊登錄:1、官網掃碼二維碼登錄;2、用戶直接進小程序實現登錄。要實現兩塊登錄且要求用戶從任意一個入口登錄都需要確定為同一個用戶,所以需要打通公眾號與小程序的用戶數據。幸運的是微信公眾平台提供了unionid機制:

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

  因此,第一步需要申請微信開放平台的開發者資質,成為開發者資質之后,可以在微信開放平台綁定需要打通數據的公眾號和小程序,讓他們擁有相同的unionid,那么接下來的工作就是實現掃碼登錄與小程序登錄后數據互通。

  掃碼登錄實現

  用戶掃碼登錄狀態時序圖,用戶在瀏覽游戲官網時發現自己喜歡的欄目,點擊點閱欄目時,瀏覽器將請求微管家服務器獲取二維碼,同時輪詢服務器用戶的掃碼狀態,第三方服務器通過前端給的網站域名查詢對應的公眾號信息,去微信后台請求場景值二維碼,並返回給瀏覽器, 瀏覽器展示給用戶二維碼,用戶掃碼二維碼后,服務器會獲取用戶的個人信息,並將用戶信息和掃碼狀態告知瀏覽器(瀏覽器一直在輪詢用戶掃碼狀態),同時種下瀏覽器cookie,此時相當面用戶已經用微信登錄且獲取微信昵稱和頭像信息,用戶可以去訂閱其他欄目。具體流程請參考下圖。需要注意的時候用戶掃碼登錄之后,要使用用戶的unionid作為用戶的唯一標識,方便下一步關聯的小程序登錄。

 

  小程序登錄實現

  小程序登錄請查考小程序官網文檔,需要注意兩個點:1、維護用戶的登錄狀態;2、用戶同意登錄授權后需要獲取用戶個加密個人信息(unionid)。第一步的用戶登錄狀態維護時序圖如下,第二步非常重要,在用戶授權同時請求第三方服務器來進行登錄獲取session時,需要將用戶的encryptedData數據數據傳回第三方服務器,解密出用戶unionid,通過服務器配置的小程序與公眾號關聯關系,同步用戶數據。

  總結

  通過上面兩步登錄設計開發即可打通該功能的兩種用戶數據,然后可以根據用戶訂閱掃碼情況發送模版消息直接打開小程序,用戶在pc瀏覽器頁面所訂閱的欄目與小程序的訂閱數據一致。  這里面的關鍵點就是用戶unionid機制,通過該機制可以打通多個公眾號、小程序之間的用戶數據,上面的案例只是一個小小的應用場景,還有更多的想象空間,結合場景值二維碼和模版消息的應用,收集用戶信息與用戶行文,后期可以考慮對用戶提供精准的推送服務。


免責聲明!

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



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