在微信小程序 雲開發中,部分用戶無法獲取到unionId ,但是有的用戶可以獲取到
上面這個用戶通過手機號登錄獲取到UnionId的,沒有獲取的在result中沒有uninid,
因為公司業務是以手機號來區分用戶的,並沒有着重與unionid ,所以能不能獲取到無所謂,但是我我納悶為啥有的可以獲取到,有的無法獲取到。
后來看了微信官方的技術文檔,知道了為什么。
UnionID獲取途徑
綁定了開發者帳號的小程序,可以通過以下途徑獲取 UnionID。
-
調用接口 wx.getUserInfo,從解密數據中獲取 UnionID。注意本接口需要用戶授權,請開發者妥善處理用戶拒絕授權后的情況。
-
如果開發者帳號下存在同主體的公眾號,並且該用戶已經關注了該公眾號。開發者可以直接通過 wx.login +
code2Session獲取到該用戶 UnionID,無須用戶再次授權。 -
如果開發者帳號下存在同主體的公眾號或移動應用,並且該用戶已經授權登錄過該公眾號或移動應用。開發者也可以直接通過 wx.login +
code2Session獲取到該用戶 UnionID ,無須用戶再次授權。 -
用戶在小程序(暫不支持小游戲)中支付完成后,開發者可以直接通過
getPaidUnionId接口獲取該用戶的 UnionID,無需用戶授權。注意:本接口僅在用戶支付完成后的5分鍾內有效,請開發者妥善處理。 -
小程序端調用雲函數時,如果開發者帳號下存在同主體的公眾號,並且該用戶已經關注了該公眾號,可在雲函數中通過 cloud.getWXContext 獲取 UnionID。
-
小程序端調用雲函數時,如果開發者帳號下存在同主體的公眾號或移動應用,並且該用戶已經授權登錄過該公眾號或移動應用,也可在雲函數中通過 cloud.getWXContext 獲取 UnionID。
以上粘貼自微信官方文檔。
我的問題出在第六項。“小程序端調用雲函數時,如果開發者帳號下存在同主體的公眾號,並且該用戶已經關注了該公眾號,可在雲函數中通過 cloud.getWXContext 獲取 UnionID。”
首先,先排查在微信開放平台是否有綁定。如果有綁定是名問題沒出在這。
其次,我將未獲取到unionid的用戶關注了公司公眾號,在刷新程序時,即可獲取unionid。
最后我覺得,如果您公司后台業務以unionid為主是,即可用wx.getUserInfo,從解密數據中獲取 UnionID。並讓產品規划出合理的授權頁面(因為需要用戶授權),
如果向我們一樣使用手機號直接獲取登錄的,就無所謂,如果還需要unionid。就讓產品出設計如何合理的讓用戶進行授權
