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