微信體系生態圈開發,離不開UnionId、OpenId,今天帶大家一起深入了解下 UnionId、OpenId 是什么,如何獲取
OpenId是什么?
OpenId?是一個用戶對于一個小程序/公眾號的標識,開發者可以通過這個標識識別出用戶。類似?wxopenid,同一個人,使用不同的小程序,會留下不同的小程序?OpenId?。獲取小程序?OpenId?無需用戶操作和授權。
UnionId是什么?
UnionId?是一個用戶對于同主體微信小程序/公眾號/APP的標識,開發者需要在微信開放平臺下綁定相同賬號的主體。開發者可通過?UnionId,實現多個小程序、公眾號、甚至APP 之間的數據互通。
正常情況下,微信生態中,UnionId?是用戶身份的唯一標識,(如果業務涉及不同主體,不一定)。
所以,如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程序),可通過?UnionId?來區分用戶的唯一性。
OpenId 如何獲取?
通過調用?wx.login()?,獲取臨時登錄憑證憑證 code
App({
onLaunch: function() {
wx.login({
success: function(res) {
if (res.code) {
//發起網絡請求
// code: 就是登錄憑證(code)
}
}
});
}
})
前端獲取到 code 后,將 code 傳給后端,后端調用接口獲取?session\_key?和?OpenId?,接口如下:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
?UinionId 如何獲???
前提條件:
- 微信開放平臺帳號已完成開發者資質認證
- 微信開放平臺綁定小程序
獲取 UnionId 流程:
- 調用接口??wx.getUserInfo?,從解密數據中獲取 UnionID。注意本接口需要用戶授權,請開發者妥善處理用戶拒絕授權后的情況。
- 如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號。開發者可以直接通過??wx.login? +?code2Session?獲取到該用戶 UnionID,無須用戶再次授權。
- 如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用。開發者也可以直接通過 wx.login +?code2Session?獲取到該用戶 UnionID ,無須用戶再次授權。
- 用戶在小程序(暫不支持小游戲)中支付完成后,開發者可以直接通過?getPaidUnionId?接口獲取該用戶的 UnionID,無需用戶授權。注意:本接口僅在用戶支付完成后的5分鐘內有效,請開發者妥善處理。
- 小程序端調用?云函數?時,如果開發者帳號下存在同主體的公眾號,并且該用戶已經關注了該公眾號,可在云函數中通過 cloud.getWXContext 獲取 UnionID。
- 小程序端調用?云函數?時,如果開發者帳號下存在同主體的公眾號或移動應用,并且該用戶已經授權登錄過該公眾號或移動應用,也可在云函數中通過??cloud.getWXContext? 獲取 UnionID。
UnionId和OpenId的關系
一個人,在同主體的小程序、公眾號等下面只有 1 個 UnionId,有多個 wxopenid 和多個小程序OpenId 。
UnionId是同主體應用下唯一身份證,可以查詢對應的wxopenid和小程序OpenId。因此,UnionId 的覆蓋率是最高的。當用戶關注公眾號、逛公眾號下面H5時,可以同時獲取 UnionId、wxopenid。而逛小程序時,可以同時獲取小程序 UnionId、openid。不管逛哪都能拿到 UnionId。
在單個小程序或公眾號里,OpenId 是唯一的。當同一個小程序主體下有多個小程序時,每個小程序有自己的 OpenId,因此需要 UnionId 進行唯一身份標識,即:UnionId 是同個主體下不同小程序的用戶唯一標識
?
本文來自投稿,如若轉載,請注明出處:http://www.chaotickets.cn/blog/715.html