• <bdo id="i4g44"></bdo>
    <code id="i4g44"><tr id="i4g44"></tr></code>
    <strike id="i4g44"></strike>
    <bdo id="i4g44"></bdo>

    微信開(kāi)發(fā):什么是UnionId和OpenId,他們的關(guān)系是什么,如何獲取?

    微信體系生態(tài)圈開(kāi)發(fā),離不開(kāi)UnionId、OpenId,今天帶大家一起深入了解下 UnionId、OpenId 是什么,如何獲取

    上海小程序開(kāi)發(fā)
    上海小程序開(kāi)發(fā)

    OpenId是什么?

    OpenId?是一個(gè)用戶對(duì)于一個(gè)小程序/公眾號(hào)的標(biāo)識(shí),開(kāi)發(fā)者可以通過(guò)這個(gè)標(biāo)識(shí)識(shí)別出用戶。類似?wxopenid,同一個(gè)人,使用不同的小程序,會(huì)留下不同的小程序?OpenId?。獲取小程序?OpenId?無(wú)需用戶操作和授權(quán)。

    UnionId是什么?

    UnionId?是一個(gè)用戶對(duì)于同主體微信小程序/公眾號(hào)/APP的標(biāo)識(shí),開(kāi)發(fā)者需要在微信開(kāi)放平臺(tái)下綁定相同賬號(hào)的主體。開(kāi)發(fā)者可通過(guò)?UnionId,實(shí)現(xiàn)多個(gè)小程序、公眾號(hào)、甚至APP 之間的數(shù)據(jù)互通。

    正常情況下,微信生態(tài)中,UnionId?是用戶身份的唯一標(biāo)識(shí),(如果業(yè)務(wù)涉及不同主體,不一定)。

    所以,如果開(kāi)發(fā)者擁有多個(gè)移動(dòng)應(yīng)用、網(wǎng)站應(yīng)用、和公眾帳號(hào)(包括小程序),可通過(guò)?UnionId?來(lái)區(qū)分用戶的唯一性。

    OpenId 如何獲取?

    通過(guò)調(diào)用?wx.login()?,獲取臨時(shí)登錄憑證憑證 code

    App({
      onLaunch: function() {
        wx.login({
          success: function(res) {
            if (res.code) {
              //發(fā)起網(wǎng)絡(luò)請(qǐng)求
              // code: 就是登錄憑證(code)
            }
          }
        });
      }
    })
    

    前端獲取到 code 后,將 code 傳給后端,后端調(diào)用接口獲取?session\_key?和?OpenId?,接口如下:

    https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
    
    

    ?UinionId 如何獲取?

    前提條件:

    1. 微信開(kāi)放平臺(tái)帳號(hào)已完成開(kāi)發(fā)者資質(zhì)認(rèn)證
    2. 微信開(kāi)放平臺(tái)綁定小程序

    獲取 UnionId 流程:

    1. 調(diào)用接口??wx.getUserInfo?,從解密數(shù)據(jù)中獲取 UnionID。注意本接口需要用戶授權(quán),請(qǐng)開(kāi)發(fā)者妥善處理用戶拒絕授權(quán)后的情況。
    2. 如果開(kāi)發(fā)者帳號(hào)下存在同主體的公眾號(hào),并且該用戶已經(jīng)關(guān)注了該公眾號(hào)。開(kāi)發(fā)者可以直接通過(guò)??wx.login? +?code2Session?獲取到該用戶 UnionID,無(wú)須用戶再次授權(quán)。
    3. 如果開(kāi)發(fā)者帳號(hào)下存在同主體的公眾號(hào)或移動(dòng)應(yīng)用,并且該用戶已經(jīng)授權(quán)登錄過(guò)該公眾號(hào)或移動(dòng)應(yīng)用。開(kāi)發(fā)者也可以直接通過(guò) wx.login +?code2Session?獲取到該用戶 UnionID ,無(wú)須用戶再次授權(quán)。
    4. 用戶在小程序(暫不支持小游戲)中支付完成后,開(kāi)發(fā)者可以直接通過(guò)?getPaidUnionId?接口獲取該用戶的 UnionID,無(wú)需用戶授權(quán)。注意:本接口僅在用戶支付完成后的5分鐘內(nèi)有效,請(qǐng)開(kāi)發(fā)者妥善處理。
    5. 小程序端調(diào)用?云函數(shù)?時(shí),如果開(kāi)發(fā)者帳號(hào)下存在同主體的公眾號(hào),并且該用戶已經(jīng)關(guān)注了該公眾號(hào),可在云函數(shù)中通過(guò) cloud.getWXContext 獲取 UnionID。
    6. 小程序端調(diào)用?云函數(shù)?時(shí),如果開(kāi)發(fā)者帳號(hào)下存在同主體的公眾號(hào)或移動(dòng)應(yīng)用,并且該用戶已經(jīng)授權(quán)登錄過(guò)該公眾號(hào)或移動(dòng)應(yīng)用,也可在云函數(shù)中通過(guò)??cloud.getWXContext? 獲取 UnionID。

    UnionId和OpenId的關(guān)系

    一個(gè)人,在同主體的小程序、公眾號(hào)等下面只有 1 個(gè) UnionId,有多個(gè) wxopenid 和多個(gè)小程序OpenId 。
    UnionId是同主體應(yīng)用下唯一身份證,可以查詢對(duì)應(yīng)的wxopenid和小程序OpenId。因此,UnionId 的覆蓋率是最高的。當(dāng)用戶關(guān)注公眾號(hào)、逛公眾號(hào)下面H5時(shí),可以同時(shí)獲取 UnionId、wxopenid。而逛小程序時(shí),可以同時(shí)獲取小程序 UnionId、openid。不管逛哪都能拿到 UnionId。
    在單個(gè)小程序或公眾號(hào)里,OpenId 是唯一的。當(dāng)同一個(gè)小程序主體下有多個(gè)小程序時(shí),每個(gè)小程序有自己的 OpenId,因此需要 UnionId 進(jìn)行唯一身份標(biāo)識(shí),即:UnionId 是同個(gè)主體下不同小程序的用戶唯一標(biāo)識(shí)

    ?



    請(qǐng)輸入姓名或昵稱
    如果您有任何疑問(wèn)、需要更多信息或希望與我們建立合作請(qǐng)留言
    =

    本文來(lái)自投稿,如若轉(zhuǎn)載,請(qǐng)注明出處:http://www.quxiaomian.com/blog/715.html

    (4)
    Infocode藍(lán)暢Infocode藍(lán)暢
    上一篇 2020年6月24日 下午10:44
    下一篇 2020年6月28日 下午11:56

    相關(guān)文章內(nèi)容推薦

    主站蜘蛛池模板: 垫江县| 平阳县| 新密市| 平安县| 德清县| 尉犁县| 荥经县| 鸡东县| 玛曲县| 博乐市| 锦屏县| 天水市| 桐柏县| 巴楚县| 永吉县| 苏尼特右旗| 乡城县| 师宗县| 高雄市| 景洪市| 淮安市| 保德县| 麟游县| 南漳县| 南投县| 邓州市| 金沙县| 利辛县| 德格县| 定襄县| 政和县| 兴宁市| 兴海县| 嘉定区| 东港市| 三门峡市| 宜兰县| 仲巴县| 黄冈市| 永泰县| 大埔区|