微信中的APP、公眾號、小程序的openid及unionid介紹
1、unionid
如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過 UnionID 來區分用戶的唯一性,因為只要是同一個微信開放平台帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對同一個微信開放平台下的不同應用,unionid是相同的。
2、openid
同一個應用(App、公眾號、小程序)的同一個用戶有唯一的openid,
openid是微信通過 appid+secret+微信號 生成的,是不變的,保證開發者能夠通過此openId辨認出同個用戶,相當於數據庫表的user表的id
微信官方文檔之獲取用戶OPENID機制:
https://wiki.open.qq.com/wiki/mobile/%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7OpenID
3、微信中的用戶微信標識:微信號
4、微信昵稱不唯一
備注:
微信官方文檔之union機制:
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html
UnionID 機制說明
如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過 UnionID 來區分用戶的唯一性,因為只要是同一個微信開放平台帳號下的移動應用、網站應用和公眾帳號(包括小程序),用戶的 UnionID 是唯一的。換句話說,同一用戶,對同一個微信開放平台下的不同應用,unionid是相同的。
UnionID獲取途徑
綁定了開發者帳號的小程序,可以通過以下途徑獲取 UnionID。
-
調用接口 wx.getUserInfo,從解密數據中獲取 UnionID。注意本接口需要用戶授權,請開發者妥善處理用戶拒絕授權后的情況。
-
如果開發者帳號下存在同主體的公眾號,並且該用戶已經關注了該公眾號。開發者可以直接通過 wx.login +
code2Session
獲取到該用戶 UnionID,無須用戶再次授權。 -
如果開發者帳號下存在同主體的公眾號或移動應用,並且該用戶已經授權登錄過該公眾號或移動應用。開發者也可以直接通過 wx.login +
code2Session
獲取到該用戶 UnionID ,無須用戶再次授權。 -
用戶在小程序(暫不支持小游戲)中支付完成后,開發者可以直接通過
getPaidUnionId
接口獲取該用戶的 UnionID,無需用戶授權。注意:本接口僅在用戶支付完成后的5分鍾內有效,請開發者妥善處理。 -
小程序端調用雲函數時,如果開發者帳號下存在同主體的公眾號,並且該用戶已經關注了該公眾號,可在雲函數中通過 cloud.getWXContext 獲取 UnionID。
-
小程序端調用雲函數時,如果開發者帳號下存在同主體的公眾號或移動應用,並且該用戶已經授權登錄過該公眾號或移動應用,也可在雲函數中通過 cloud.getWXContext 獲取 UnionID。