理解微信體系中的 AppID、OpenID 和 UnionID

前言:?

在開發微信相關的服務(如小程序,公眾號,微信開放平臺等)時,很多人都會接觸到幾個看起來相似但實際用途不同的額ID: AppiD, OpenID,UnionID. 搞清楚這三者的區別,是微信生態開發中的基本功,本文將從開發者視角觸發,深入淺出地解釋它們的關系,區別以及實際應用場景

一.什么是AppID?

AppID(應用ID)是微信平臺分配給每一個應用的唯一身份標識?

常見類型包括:?
  • 公眾號AppID: 服務號 / 訂閱號
  • 小程序AppID?
  • 開放平臺AppID:用于網站登錄,第三方平臺

每個AppID都代表一個"應用實例",開發者在調用微信相關接口時(如登錄授權,支付,模版消息等),都需要提供對應的AppID和AppSecret

舉個例子: 你做了一個公眾號 + 一個小程序,它們就分別有自己的AppID,互相獨立

AppSecret

51b6e0bcc165904f6a232b3b3db62286

微信小程序的AppSecret(小程序秘鑰)是微信開放平臺提供給開發者的一種安全機制,用于保護小程序的數據安全和驗證開發者身份
具體可以進行: 身份驗證,獲取 access_token,數據加密,服務器簡通信,數據安全等?

二、什么是OpenID?

OpenID是微信為用戶在某個"AppID"下生成的唯一標識

特點:

  • 同一個用戶,在不同AppID(比如你的公眾號和你的小程序)下的OpenID是不同的
  • 也就是說,OpenID是針對 AppID的唯一標識

舉例:?

假設一個用戶的微信號是 wx_user001:

平臺AppID用戶 OpenID
你的小程序wx_appid_123openid_abc123
你的公眾號wx_appid_456openid_def456

?他們代表的是同一個人,但OpenID不一樣,這是微信用來隔離用戶數據的設計?

三. UnionID又是啥?

unionID 是在你注冊了"微信開放平臺"之后,微信為同一個用戶在多個AppID下提供的統一身份標識

獲取條件:?
  • 你的小程序/公眾號綁定到了同一個開發平臺賬號
  • 用戶必須通過授權接口獲取(比如 getUserInfo返回中才可能帶上)

特點:?

  • 同一個用戶,只要在你名下的任意AppID下登錄過,就可以拿到相同的 UnionID
  • 前提是這寫AppID都綁定到了同一個微信開放賬號?

舉例:

你有一個小程序+一個公眾號+一個網頁掃碼登錄(開放平臺)

如果這三個都綁定了同一個微信開放平臺賬號,并且用戶都登陸過,

你就可以通過unionId確定是"同一個人"

4.三者關系總結圖

? ? ? ? ?+--------------------------+
| ? ? ? 微信開放平臺 ? ? ? ?|
|(綁定多個 AppID 實例) ? ? |
+--------------------------+
|
+----------------------------+
| ? ? ?同一用戶的 UnionID ? ? |
+----------------------------+
/ ? ? ? ? ? | ? ? ? ? \
+--------+ ? +---------+ ?+----------+
| 小程序A | ? | 公眾號B ?| ?| 網頁登錄C |
+--------+ ? +---------+ ?+----------+
| ? ? ? ? ? ? ?| ? ? ? ? ? ? ?|
OpenID_a ? ? ?OpenID_b ? ? ?OpenID_c

五. 實際開發中的應用場景

場景推薦使用的 ID原因說明
小程序中識別用戶OpenID唯一且直接可獲取
公眾號內用戶識別OpenID同上
跨平臺整合用戶數據(公眾號+小程序)UnionID多平臺用戶打通
后端統一用戶表的主鍵自定義 user_id + UnionID避免 ID 沖突,可擴展

六、常見坑和注意事項

1. unionID 獲取不到?

  • 用戶沒有授權 getUserInfo?
  • 沒綁定開放平臺賬號
  • 用戶沒關注公眾號(老接口)
  • 沒有綁定郵箱驗證的開放平臺賬號

2.為什么同一個人有兩個OpenID?

  • 因為OpenDI是針對AppID的,換個小程序/公眾號就變了

3.如果只有一個平臺,用不用關心 UnionID?

  • 不需要, OpenID 就足夠了

七、總結一句話:?

AppID是應用的身份,OpenID是用戶在某個應用下的身份,UnionID是同一用戶在多個應用下的統一身份?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91585.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FFmpeg,如何插入SEI自定義數據

FFmpeg,如何插入SEI自定義數據 一、什么是SEI? SEI(Supplemental Enhancement Information,補充增強信息)是H.264/H.265視頻編碼標準中的一種元數據載體,它允許在視頻流中嵌入額外的信息,如時…

為什么分類任務偏愛交叉熵?MSE 為何折戟?

在機器學習的世界里,損失函數是模型的“指南針”——它定義了模型“好壞”的標準,直接決定了參數優化的方向。對于分類任務(比如判斷一張圖片是貓還是狗),我們通常會選擇交叉熵作為損失函數;而在回歸任務&a…

[echarts]橫向柱狀圖

前言 接到一個需求,需要展示一個橫向的柱狀圖,按數量從大到小排序,并定時刷新 使用react配合echarts進行實現。 react引入echarts import React, { useEffect, useRef } from react; import * as echarts from echarts; import DeviceApi fro…

【開源項目】輕量加速利器 HubProxy 自建 Docker、GitHub 下載加速服務

??引言?? 如果你經常被 Docker 鏡像拉取、GitHub 文件下載的龜速折磨,又不想依賴第三方加速服務(擔心穩定性或隱私),今天分享的 ??HubProxy?? 可能正是你需要的。這個開源工具用一行命令就能部署,以極低資源消…

java web jsp jstl練習

JSP 的學習。 核心功能模塊 1. 源代碼層 ( src ) HelloWorld :主程序入口領域模型 : domain 包含User.java和ceshi.java控制器 : servlet 包含登錄驗證和驗證碼相關ServletWeb表現層 ( web ) JS…

VSCode 完全指南:釋放你的編碼潛能

零、簡介 在當今的軟件開發領域,代碼編輯器的選擇至關重要,它就像是工匠手中的工具,直接影響著工作效率和成果質量。Visual Studio Code(簡稱 VSCode)自問世以來,迅速在全球開發者社區中嶄露頭角&#xff…

《n8n基礎教學》第一節:如何使用編輯器UI界面

在本課中,你將學習如何操作編輯器界面。我們將瀏覽畫布,向您展示每個圖標的含義,以及在 n8n 中構建工作流程時在哪里可以找到您需要的東西。本課程基于 n8n 最新版本 。在其他版本中,某些用戶界面可能有所不同,但這不會…

gcc g++ makefile CMakeLists.txt cmake make 的關系

gcc:C語言編譯器g:C編譯器makefile:定義編譯規則、依賴關系和構建目標。可以手動編寫,也可以由CMakeLists.txt生成cmake:讀取CMakeLists.txt文件,生成Makefilemake:構建工具,執行Mak…

SFT 訓練器

SFT 訓練器 “訓練時間到!” 我們現在終于可以創建一個監督微調訓練器的實例了: trainer = SFTTrainer( model=model, processing_class=tokenizer, args=sft_config, train_dataset=dataset, )SFTTrainer 已經對數據集進行了預處理,因此我們可以深入查看,了解每個小批次…

Android Material Components 全面解析:打造現代化 Material Design 應用

引言 在當今移動應用開發領域,用戶體驗(UX)已成為決定應用成功與否的關鍵因素之一。Google推出的Material Design設計語言為開發者提供了一套完整的視覺、交互和動效規范,而Material Components for Android(MDC-Android)則是將這些設計理念轉化為可重用…

Windows使用Powershell自動安裝SqlServer2025服務器與SSMS管理工具

安裝結果: 安裝前準備: 1.下載mssql server 2025安裝器 2.下載iso鏡像 3.下載好SSMS安裝程序,并放到iso同目錄下 4.執行腳本開始自動安裝

09 RK3568 Debian11 ES8388 模擬音頻輸出

1、設備樹配置 確認自己的i2c,使用sdk帶的驅動es8323 /SDK/kernel/sound/soc/codecs/es8323.c es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card"; rockchip,card-name = "rockchip,es8388-codec"; …

力扣-199.二叉樹的右視圖

題目鏈接 199.二叉樹的右視圖 class Solution {public List<Integer> rightSideView(TreeNode root) {List<Integer> res new ArrayList<>();Queue<TreeNode> queue new LinkedList<>();if (root null)return res;queue.offer(root);while …

Android Bitmap 完全指南:從基礎到高級優化

在 Android 開發中&#xff0c;圖像處理是一個核心且復雜的領域&#xff0c;而 Bitmap 作為 Android 中表示圖像的基本單位&#xff0c;貫穿了從簡單圖片顯示到復雜圖像編輯的各個場景。然而&#xff0c;Bitmap 處理不當往往會導致應用性能下降、內存溢出&#xff08;OOM&#…

unity日志過濾器

背景&#xff1a;之前做游戲的時候和同組的同事聊過說日志過濾盡量不要限制大家怎么使用日志打印的接口&#xff0c;不要加額外的參數&#xff0c;比如多加一個標簽string,或者使用特定的接口&#xff0c;枚舉。最好就是日志大家還是用Debug.Log無感去用&#xff0c;然后通過勾…

OpenGL Camera

一. lookAt函數的參數含義glm::mat4 view glm::lookAt(cameraPos, // 相機在世界坐標系中的位置&#xff08;任意值&#xff09;cameraPos cameraFront, // 相機看向的目標點&#xff08;位置朝向&#xff09;cameraUp // 相機的"上方向"&#xff08;通…

Android RTMP推送|輕量級RTSP服務同屏實踐:屏幕+音頻+錄像全鏈路落地方案

一、背景&#xff1a;從“移動終端”到“遠程協作節點”&#xff0c;同屏音頻錄像為何成剛需&#xff1f; 在數字化辦公、智慧醫療與遠程教育等快速發展的推動下&#xff0c;手機作為隨身終端&#xff0c;已不再只是“內容接收者”&#xff0c;而逐步成為遠程信息發布與可視化…

NLP 和 LLM 區別、對比 和關系

理解自然語言處理(NLP)和大語言模型(LLM)的區別、對比和關系對于把握現代人工智能的發展非常重要。以下是清晰的分析: 核心定義 NLP (Natural Language Processing - 自然語言處理): 是什么: 一個廣闊的計算機科學和人工智能子領域,致力于讓計算機能夠理解、解釋、操作…

Altium 移除在原理圖之外的元器件

Altium新手&#xff0c;最近在畫原理圖的時候&#xff0c;遇見了這種不小心拖到界面外的元器件&#xff0c;發現拖不回來了了&#xff0c;查閱了一下&#xff0c;總結在這里 官方推薦的方法----------------使用“SCH List”面板刪除 鏈接&#xff1a;如何移除在原理圖之外的元…

【Linux我做主】細說環境變量

Linux環境變量Linux環境變量github地址前言1. 基本概念環境變量的本質2. 認識常見的環境變量PATH查看PATH修改PATHHOMESHELL其他常見環境變量PWD與OLDPWDLOGNAME與USERSSH_TTY由環境變量理解權限使用系統調用獲取環境變量理解權限3. 總結什么是環境變量3. 命令行參數和環境變量…