OpenID: 普通用戶的標識,對當前開發者賬號惟一。一個openid對應一個公衆號。 UnionID :用戶統一標識。針對一個微信開放平臺賬號下的應用,同一用戶的unionid是惟一的。 微信的用戶隱私策略:每一個接入微信的應用(公衆號、APP)就像一個獨立的商場,用戶使用這些應用就像逛商場,商場用會員卡識別用戶,相似的,咱們根據商場名字爲每一個用戶生成了一張專屬會員卡(openid),每張會員卡只能在對應的商場纔可以使用,你不能拿着沃爾瑪的會員卡去華潤萬家積分。這是一種安全的受權方式,若是沒有這個會員卡,直接暴露微信號,就至關於拿着身份證去逛商場,丟失一個會員卡號遠比丟失身份證號要安全。小程序
那麼問題來了,都是萬達集團,萬達大歌星與萬達商場但願作到會員卡通用。微信在這裏作了一個打通機制,對於同一個企業,在用戶屬性裏面加了一個企業屬性(UnionID),方便同一個企業在不一樣的產品中識別到同一個用戶。 這個機制伴隨着微信聯合登陸已經在微信開放平臺(open.weixin.qq.com)推出了。得到了開放平臺認證的企業,能夠綁定10個手機應用、10個網站、10個公衆號,他們對應的用戶信息也能夠互聯互通。安全
###強烈提示:對於開發團隊而言,在接入微信登陸之初,每每會忽視用戶的UnionID,只記錄了openid。這會致使後期帳號打通時候,須要用戶從新受權,運營成本增高,遇到此類問題的團隊不在少數。微信
獲取unionID的4種方式: 一、調用接口 wx.getUserInfo,從解密數據中獲取 UnionID。注意本接口須要用戶受權,請開發者妥善處理用戶拒絕受權後的狀況。 二、若是開發者賬號下存在同主體的公衆號,而且該用戶已經關注了該公衆號。開發者能夠直接經過 wx.login + code2Session 獲取到該用戶 UnionID,無須用戶再次受權。 三、若是開發者賬號下存在同主體的公衆號或移動應用,而且該用戶已經受權登陸過該公衆號或移動應用。開發者也能夠直接經過 wx.login + code2Session 獲取到該用戶 UnionID ,無須用戶再次受權。 四、小程序端調用雲函數時,當知足 UnionID 獲取條件時可在雲函數中經過 cloud.getWXContext 獲取 UnionID函數