實(shí)現(xiàn)微信UnionID與多個(gè)系統(tǒng)UserID關(guān)聯(lián)方法
下邊這篇文章筆者將介紹在用戶系統(tǒng)賬號(hào)與微信賬號(hào)一對(duì)多的情況下,如何設(shè)計(jì)來實(shí)現(xiàn)數(shù)據(jù)的互通的相關(guān)信息。有需要了解相關(guān)信息的同學(xué)可以了解了解。
一、背景與目的
如果我們系統(tǒng)的用戶賬號(hào)與微信賬號(hào)是一對(duì)一的關(guān)系,那么我們可以輕松地將系統(tǒng)數(shù)據(jù)與微信生態(tài)應(yīng)用中的數(shù)據(jù)聯(lián)通起來。
但是由于業(yè)務(wù)需求或特殊情況,我們的用戶系統(tǒng)賬號(hào)與微信賬號(hào)往往無法保持一對(duì)一的映射關(guān)系,例如允許用戶在小程序之間切換賬號(hào),或者將多個(gè)系統(tǒng)子賬號(hào)的通知推送到同一個(gè)微信公眾號(hào)中。本文將介紹在用戶系統(tǒng)賬號(hào)與微信賬號(hào)一對(duì)多的情況下,如何設(shè)計(jì)來實(shí)現(xiàn)數(shù)據(jù)的互通。
二、方案設(shè)計(jì)
1. 微信用戶體系調(diào)研
對(duì)于同一個(gè)用戶,在同一個(gè)微信開放平臺(tái)賬號(hào)下的不同移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用和公眾號(hào)(包括小程序)中,OpenID不同,但UnionID相同。例如,如果您擁有小程序A、小程序B和一個(gè)微信公眾號(hào),并將它們綁定到同一個(gè)微信開放平臺(tái)賬號(hào)下,當(dāng)微信用戶進(jìn)入小程序A、小程序B或公眾號(hào)時(shí),他們獲得的UnionID是相同的。這意味著可以根據(jù)UnionID查詢當(dāng)前微信用戶在同一開放平臺(tái)下的每個(gè)小程序或公眾號(hào)中的數(shù)據(jù),從而實(shí)現(xiàn)了數(shù)據(jù)的高效共享。
2. 設(shè)計(jì)思路
- 為滿足業(yè)務(wù)需求,應(yīng)允許一個(gè)UnionID綁定多個(gè)UserID;
- 根據(jù)微信用戶體系調(diào)查,應(yīng)允許一個(gè)UnionID對(duì)應(yīng)多個(gè)不同應(yīng)用(在同一開放平臺(tái)下)的OpenID,并且確保UnionID和各個(gè)OpenID之間具有唯一性(即一個(gè)UnionID對(duì)應(yīng)不同應(yīng)用的OpenID不會(huì)重復(fù));
- 為提高產(chǎn)品易用性并降低用戶操作成本,UserID、UnionID和OpenID之間的關(guān)聯(lián)操作應(yīng)靈活,不要求用戶按照特定順序執(zhí)行。例如,用戶可以先關(guān)注公眾號(hào),然后登錄小程序以完成關(guān)聯(lián),也可以通過登錄小程序后再關(guān)注公眾號(hào)來完成關(guān)聯(lián);
- 為確保賬戶信息的安全性和操作準(zhǔn)確性,不允許一個(gè)UserID綁定多個(gè)UnionID。當(dāng)UserID已經(jīng)關(guān)聯(lián)了一個(gè)UnionID時(shí),應(yīng)將其更新為當(dāng)前登錄的UnionID和OpenID;
- 在數(shù)據(jù)新增和更新時(shí),應(yīng)同時(shí)將UserID和UnionID作為主鍵,以避免一個(gè)UserID對(duì)應(yīng)多個(gè)UnionID的數(shù)據(jù)存在。
3. 設(shè)計(jì)方案
根據(jù)上述解決方案思路,我們?yōu)橐韵?個(gè)場(chǎng)景進(jìn)行了詳細(xì)設(shè)計(jì):登錄小程序、通過Web掃碼關(guān)注公眾號(hào)、通過微信關(guān)注公眾號(hào)以及取消關(guān)注公眾號(hào)。通過這些設(shè)計(jì),我們實(shí)現(xiàn)了以下效果:
- 一個(gè)微信賬號(hào)可以登錄多個(gè)系統(tǒng)賬號(hào),并且多個(gè)系統(tǒng)賬號(hào)的信息可以推送至該微信的公眾號(hào)中。
- 用戶可以在這4個(gè)場(chǎng)景中隨意執(zhí)行,不受順序限制,而仍然能夠確保系統(tǒng)賬號(hào)與小程序、公眾號(hào)的準(zhǔn)確關(guān)聯(lián)。
登錄小程序場(chǎng)景:
Web掃碼關(guān)注公眾號(hào):
微信里關(guān)注公眾號(hào):
取消關(guān)注公眾號(hào):
三、最后
本文詳細(xì)探討了在用戶系統(tǒng)賬號(hào)與微信賬號(hào)無法一一對(duì)應(yīng)時(shí),如何設(shè)計(jì)系統(tǒng)以實(shí)現(xiàn)數(shù)據(jù)的互通。實(shí)現(xiàn)過程中,需注意用戶操作的靈活性和信息的安全性。用戶可以在不同的場(chǎng)景中自由切換,而系統(tǒng)能夠確保賬號(hào)之間的準(zhǔn)確關(guān)聯(lián)。同時(shí),通過將UserID和UnionID作為主鍵,我們避免了一個(gè)UserID對(duì)應(yīng)多個(gè)UnionID的數(shù)據(jù)沖突,確保了數(shù)據(jù)的一致性和準(zhǔn)確性。
本文由 @Kuang扶正義的匡 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
什么情況下,userid對(duì)應(yīng)unionid會(huì)發(fā)生變化,以出現(xiàn)重新綁定的場(chǎng)景
如果產(chǎn)品還是用同一個(gè)開放平臺(tái)賬號(hào)的情況下,那么用戶切換微信登錄同一個(gè)userid賬號(hào)的時(shí)候,unionid就會(huì)變化了。進(jìn)而,對(duì)應(yīng)的openid也會(huì)發(fā)生變化滴~