問題背景
-
通過觀察數(shù)據(jù),發(fā)現(xiàn)有一部分用戶是無法獲取到UnionId的
-
也就是接口返回的參數(shù)中不包含UnionId參數(shù)
-
看了微信文檔的解釋,只要小程序在開放平臺綁定,就一定會分配UnionId
-
網(wǎng)上也有用戶遇到這樣的情況,沒有解決
問題影響
使用微信小程序成功授權(quán)以后,下次在公眾號中授權(quán)或在App中使用微信授權(quán),無法識別是同一個微信用戶,可能會出現(xiàn)一個微信用戶綁定不同App用戶的情況。
UnionID機制
微信對UnionId機制的原文解釋
如果開發(fā)者擁有多個移動應(yīng)用、網(wǎng)站應(yīng)用、和公眾帳號(包括小程序),可通過unionid來區(qū)分用戶的唯一性,因為只要是同一個微信開放平臺帳號下的移動應(yīng)用、網(wǎng)站應(yīng)用和公眾帳號(包括小程序),用戶的unionid是唯一的。換句話說,同一用戶,對同一個微信開放平臺下的不同應(yīng)用,unionid是相同的。
同一個微信開放平臺下的相同主體的App、公眾號、小程序,如果用戶已經(jīng)關(guān)注公眾號,或者曾經(jīng)登錄過App或公眾號,則用戶打開小程序時,開發(fā)者可以直接通過wx.login獲取到該用戶UnionID,無須用戶再次授權(quán)。
注意: 后邊這句話的描述
用戶關(guān)注過公眾號,或者曾經(jīng)登錄過App或公眾號,則用戶打開小程序時,開發(fā)者可以直接通過wx.login獲取到該用戶UnionID
即:如果用戶沒有關(guān)注過公眾號,或者沒有登陸過App,通過wx.login是無法獲取到該用戶UnionID,只能通過wx.getUserInfo來獲取UnionId
經(jīng)驗證,系統(tǒng)不存在UnionId的小程序用戶都是沒有關(guān)注公眾號或未在App中使用微信授權(quán)的用戶
解決方案
-
獲取小程序UnionId應(yīng)該以wx.getUserInfo的UnionId為主
-
wx.getUserInfo需要用戶授權(quán),產(chǎn)品方面,需要考慮用戶拒絕授權(quán)的處理流程
|