將 WeChat 驗證與顧客 WiFi Captive Portals 整合
本指南說明如何將 WeChat OAuth 2.0 驗證整合至企業級顧客 WiFi Captive Portals。內容涵蓋雙平台註冊要求、用於獲取第一方數據的權限範圍(Scope)選擇、透過 RADIUS Change of Authorization 進行的網路強制執行,以及對 GDPR 和中國 PIPL 的合規性。餐旅業、零售業和活動場地的營運商將能從中獲得具體的實作步驟、實際案例研究和安全性強化指南,以大規模部署支援 WeChat 登入的顧客 WiFi。
收聽此指南
查看播客逐字稿

執行摘要
當中國訪客連線到您的企業網路,並遇到僅提供電子郵件、Facebook 或優惠券代碼的 Captive Portal 時,您會立即引入阻礙。根據騰訊 2024 年的數據,WeChat 擁有 13.8 億月活躍用戶。整合支援 WeChat 登入的顧客 WiFi 功能並非僅是餐旅業的便利之舉,而是無阻礙獲取該客群第一方數據的技術要求。
本指南詳細介紹了將 WeChat OAuth 2.0 驗證整合至 Captive Portals 的技術架構。其中解釋了支援標準行動瀏覽器和 WeChat 內建瀏覽器所需的雙平台註冊,評估了用於數據收集的 snsapi_base 與 snsapi_userinfo 權限範圍之間的折衷方案,並概述了如何使用 RADIUS Change of Authorization (CoA) 或 MAC 驗證旁路來強制執行網路存取。此外,它還涵蓋了在 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet 基礎架構中大規模部署此功能所需的安全性設定和合規指令(GDPR 和中國的 PIPL)。
技術深挖:WeChat OAuth 2.0 架構
Captive Portal 攔截來自未驗證裝置的 HTTP 流量,並將其重新導向至託管在 Portal 伺服器上的登入頁面。加入 WeChat 驗證是使用 OAuth 2.0 協定(與 Google、Microsoft Entra ID 和 Okta 用於同盟身分識別的標準相同)在此流程中插入第三方身分識別提供者。

驗證順序如下。顧客連線到 SSID。存取點或無線控制器偵測到未驗證的工作階段,並將 HTTP 流量重新導向至 Captive Portal URL。顧客在 Portal 網頁上選擇 WeChat 登入。Portal 伺服器將瀏覽器重新導向至位於 open.weixin.qq.com 的 WeChat 授權端點,並傳遞 AppID、重新導向 URI、回應類型 code 以及請求的權限範圍。WeChat 在其自己的伺服器上處理驗證。如果顧客使用帶有 snsapi_base 權限範圍的 WeChat 內建瀏覽器,則驗證是無感的——不會出現同意提示。如果使用 snsapi_userinfo,WeChat 會呈現同意畫面。然後,WeChat 會帶著臨時授權碼重新導向回 Portal 的重新導向 URI。Portal 伺服器透過呼叫 api.weixin.qq.com/sns/oauth2/access_token 來交換此授權碼以取得 Access Token,並傳遞 AppID、AppSecret、授權碼和 authorization_code 的授權類型。WeChat 會傳回 Access Token、Refresh Token、使用者的 OpenID 以及授予的權限範圍。如果授予了 snsapi_userinfo,伺服器會進行第二次 API 呼叫以取得使用者的暱稱、頭像、性別和城市。
雙平台註冊要求
大多數實作在註冊階段失敗。WeChat 營運兩個獨立的開發者平台,企業部署通常兩者都需要。
| 平台 | URL | 需要的帳戶類型 | 支援的權限範圍 | 瀏覽器情境 |
|---|---|---|---|---|
| 公眾平台 | mp.weixin.qq.com | 服務號 | snsapi_base, snsapi_userinfo | WeChat 內建瀏覽器 |
| 開放平台 | open.weixin.qq.com | 網站應用 | snsapi_login | 標準行動瀏覽器 |
對於在 WeChat 內建瀏覽器中存取 Portal 的顧客,您需要在公眾平台上註冊服務號。訂閱號將無法運作——它缺乏 OAuth 網頁授權權限。對於從 Android 上的 Chrome 或 iOS 上的 Safari 存取 Portal 的顧客,您需要在開放平台上註冊網站應用,該應用使用 snsapi_login 權限範圍並呈現一個 QR Code 供使用者掃描。
在實務中,大多數場地部署兩者都會使用。酒店的顧客可能會在 Chrome 中開啟 Portal,看到 QR Code,用 WeChat 掃描並進行驗證。或者他們可能會點擊 WeChat 本身中的連結,進入內建瀏覽器,並使用 snsapi_base 進行無感驗證。
權限範圍選擇:數據獲取 vs. 阻礙

您請求的權限範圍決定了您收集哪些數據以及顧客體驗到的阻礙。這是一個具有合規性影響的真正決策點。
snsapi_base 僅傳回 OpenID——該使用者在您公眾號內的唯一識別碼。它不需要使用者同意提示。驗證對顧客而言是無感的。當您已擁有回訪顧客的個人檔案,或當您優先考慮無阻礙存取時,請使用此選項。在 GDPR 和 PIPL 數據最小化原則下, snsapi_base 更容易進行合規說明。
snsapi_userinfo 傳回 OpenID 以及使用者的暱稱、個人頭像、性別和城市。它需要一個明確的同意畫面。對於您需要建立個人檔案的首次顧客註冊,請使用此選項,並在您的 Portal 網頁上搭配符合規範的同意層。
用於多物業部署的 UnionID
OpenID 對於使用者和特定公眾號的組合是唯一的。一個擁有 20 家物業且每家物業都有自己公眾號的酒店集團,將會看到同一個顧客的 20 個不同 OpenID。UnionID 解決了這個問題。它是一個單一識別碼,代表連結到同一個開放平台帳戶的所有公眾號和應用程式中的使用者。將您的公眾號連結到您的開放平台帳戶,UnionID 就會包含在 OAuth 回應中傳回。這是建立 cross-property 訪客識別。
實作指南
網路強制執行機制
取得 OAuth 權杖可證明身分,但並不會開啟網路。您必須向控制器發送訊號以允許流量。
RADIUS 授權變更 (CoA)(定義於 RFC 3576)是推薦的企業級方法。在成功進行 OAuth 後,入口網站伺服器會向網路控制器發送 CoA 請求。控制器會將裝置從驗證前 VLAN 移動到訪客 VLAN。這適用於 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet。
MAC 驗證繞過 (MAB) 會將裝置的 MAC 位址註冊為 RADIUS 資料庫中的已授權用戶端。控制器會根據該 MAC 位址允許存取。MAB 的實作較為簡單,但並不可靠:現代 iOS 和 Android 裝置預設會隨機化 MAC 位址,這會在重新連線時中斷工作階段關聯。
Purple 的 Guest WiFi 平台可自動執行此轉換。在微信 OAuth 完成後,Purple 的雲端重疊網路會向底層硬體發送適當的 CoA 或 MAB 訊號,從而免去手動設定 VLAN 的麻煩。
安全性設定
有三項設定是不可妥協的。
- 保護 AppSecret。
AppSecret絕不能出現在用戶端的 JavaScript 中。它必須保留在您的伺服器上。如果外洩,攻擊者可以冒充您的應用程式並代表您呼叫微信 API。 - 實作 CSRF 防護。 產生一個加密隨機的
state值,將其儲存在使用者的工作階段中,並在微信重新導向回來時進行驗證。這可以防止 RFC 6749 中定義的跨站請求偽造攻擊。 - 註冊所有重新導向 URI 變體。 微信會根據您註冊的網域驗證重新導向 URI。請註冊您使用的每個子網域和路徑變體(包括預備環境),以防止出現錯誤 40029(無效的代碼)。
應用程式內瀏覽器偵測
微信的應用程式內瀏覽器會設定包含 MicroMessenger 的使用者代理(User Agent)字串。您的入口網站必須偵測此字串並進行相應的路由:應用程式內瀏覽器使用公眾號流程,標準瀏覽器則使用開放平台 QR code 流程。若未能偵測到此字串,將會導致體驗中斷或驗證錯誤。

最佳實踐與合規性
GDPR 合規性
如果您服務歐洲訪客或在歐洲營運,GDPR 適用於您透過微信 OAuth 收集的資料。您必須建立合法的處理依據——通常是同意或合法權益。在進行驗證之前,您必須在 Captive Portal 上提供清晰的隱私權聲明。您必須尊重當事人存取請求和刪除請求。如需詳細的合規架構,請參閱 合規指南:GDPR 與 Guest WiFi 資料隱私 。
PIPL 合規性
當您處理中國公民的個人資料時,適用中國的《個人信息保護法》(PIPL)。與 GDPR 類似,PIPL 要求明確的目的限制、資料最小化以及有記錄的合法依據。snsapi_base 在資料最小化原則下比 snsapi_userinfo 更容易證明其合理性。無論您收集什麼,請在正式上線前記錄您的法律依據和保留期限。
網路分段
使用 VLAN 分段將訪客 WiFi 流量與您的企業網路隔離。透過微信驗證的訪客應進入專用的訪客 VLAN,且僅能存取網際網路——無法存取內部系統。這符合 PCI DSS 對持卡人資料環境隔離的要求以及一般的企業安全實踐。如需了解更多關於分段架構的資訊,請參閱 頻寬管理:2026 年實用指南 。
備用驗證
如果微信的 API 無法使用,您的入口網站必須重新導向至替代的登入方法。不要讓訪客面對空白畫面。備用到電子郵件或簡訊可確保連線不中斷。這對於 交通運輸 和 醫療保健 環境中的場所尤為重要,因為在這些環境中,網路連線是一項服務義務。
實際案例研究
款待業:奢華酒店集團
倫敦一家擁有 400 間客房的奢華酒店服務了很大比例來自中國大陸的旅客。他們現有的 Captive Portal 需要電子郵件地址和簡訊驗證。中國的手機號碼經常無法接收來自歐洲電信商的簡訊,且許多旅客的裝置上並未設定當地的電子郵件。這導致入口網站的流失率高達 60%。
該酒店在公眾平台註冊了服務號,並在開放平台註冊了網站應用程式。入口網站會偵測 MicroMessenger 使用者代理,並為應用程式內瀏覽器使用者觸發 snsapi_base——在不到三秒的時間內將他們連線,且無需彈出同意畫面。透過 Chrome 或 Safari 瀏覽器存取的訪客則會看到一個 QR code。在隨後的入住中,系統會識別出相同的 OpenID,並自動為訪客重新進行驗證。酒店的 CRM 會記錄回訪,從而實現有針對性的抵達前溝通。如需了解更多關於在款待業環境中部署 WiFi 的資訊,請參閱 款待業 。
零售業:購物中心數據分析
一家大型購物中心希望收集中國消費者的客群特徵數據,以作為招商組合和行銷決策的參考。他們需要出發城市、性別和到訪頻率。僅靠 snsapi_base 是不夠的——他們需要 snsapi_userinfo。入口網站會請求完整的 userinfo 權限範圍。訪客會看到微信同意畫面並點擊「允許」。該購物中心的分析平台與 Purple 的 WiFi Analytics 整合,可接收經過驗證的客群特徵數據串流。在週六下午,有 40% 的 WiFi 使用者來自特定地區。這些數據直接y 有助於了解應接觸哪些品牌以舉辦快閃活動。若要了解更多關於零售 WiFi 部署的資訊,請參閱 零售 。
疑難排解與風險緩釋
在 WeChat OAuth Captive Portal 部署中,最常見的五種失敗模式如下。
重新導向 URI 不符(錯誤 40029)。 WeChat 會根據已註冊的網域驗證重新導向 URI。任何子網域、路徑或協定不符都會導致代碼交換失敗。請註冊所有變體,包括預備環境。
AppSecret 外洩。 將 AppSecret 嵌入用戶端程式碼是最嚴重的單一安全性錯誤。請將所有權杖(token)交換邏輯移至伺服器端。
缺少 CSRF 保護。 遺漏 state 參數驗證會使 Portal 易受跨網站請求偽造(CSRF)攻擊。請為每個工作階段(session)產生一個加密隨機值,並在回呼(callback)時進行驗證。
應用程式內瀏覽器偵測失敗。 未能在使用者代理(user agent)中偵測到 MicroMessenger,意味著使用應用程式內瀏覽器的使用者將被引導至錯誤的 OAuth 流程,進而產生錯誤。
MAC 位址隨機化破壞 MAB 工作階段。 現代行動作業系統會隨機化 MAC 位址。使用基於 MAB 強制執行的訪客在重新連線時將遺失其工作階段。請升級至 RADIUS CoA 以獲得可靠的工作階段管理。如需安全 WiFi 設定指引,請參閱 什麼是安全 WiFi:2026 年企業必備指南 。
投資報酬率(ROI)與業務影響
部署 WeChat 登入訪客 WiFi 功能具有三個可衡量的影響。
提高驗證率。 消除簡訊驗證失敗點和電子郵件輸入要求,可提高中國訪客成功連線的比例。對於不支援 WeChat 的 Portal,60% 的流失率是一個真實的基準。
第一方數據品質。 經 WeChat 驗證的個人檔案包含已驗證的 OpenID,且透過 snsapi_userinfo,可直接獲取來自社群平台的客群屬性。這些數據會匯入分析平台,以推動精準行銷,而無需依賴第三方 Cookie。
降低支援成本。 無縫登入可減少國際訪客因排解連線問題而撥打給前台和 IT 支援的電話。
Purple 在全球超過 80,000 個場域營運,並在 2024 年處理了 4.4 億次登入(Purple 內部數據)。該平台已通過 ISO 27001 認證,符合 GDPR 和 CCPA 規範,並維持 99.999% 的可用性。對於 零售 和 旅宿餐飲 領域的場域,WeChat 驗證將網路從成本中心轉變為可靠的第一方數據獲取管道。
關鍵定義
Captive Portal
攔截來自未驗證裝置的 HTTP 流量,並要求使用者在獲得網路存取權之前與其進行互動的網頁。
向顧客呈現 WeChat 登入選項的主要介面。Portal 伺服器託管此網頁並協調 OAuth 流程。
OAuth 2.0
一種業界標準的授權協定 (RFC 6749),允許第三方應用程式代表使用者獲得對 HTTP 服務的有限存取權。
WeChat 用於向 Portal 伺服器傳遞驗證 Token 且不洩露使用者憑證的底層協定。與 Microsoft Entra ID、Okta 和 Google Workspace 使用的協定相同。
OpenID
分配給特定 WeChat 使用者在特定公眾號下的唯一英數字元識別碼。
在 WiFi 分析資料庫中用作識別回訪顧客的主鍵。每個公眾號的 OpenID 皆不同——跨場所識別請使用 UnionID。
UnionID
代表同一個開放平台帳戶下連結的所有公眾號和應用程式中,該使用者的單一 WeChat 識別碼。
對於擁有多個場地、需要跨所有物業識別同一位顧客的酒店集團、零售連鎖店和體育場營運商而言至關重要。
RADIUS CoA (Change of Authorization)
RADIUS 協定 (RFC 3576) 的擴充功能,允許 RADIUS 伺服器動態變更作用中工作階段的授權屬性。
在成功進行 WeChat 登入後,將顧客裝置從隔離的驗證前 VLAN 移至作用中網際網路 VLAN 的安全方法。支援的設備包括 Cisco Meraki、HPE Aruba、Ruckus、Juniper Mist、Ubiquiti UniFi、Cambium、Extreme 和 Fortinet。
snsapi_base
一種 WeChat OAuth 權限範圍,僅傳回使用者的 OpenID,且不需要使用者確認同意。
推薦用於回訪顧客重新驗證的權限範圍。在 GDPR 和 PIPL 數據最小化原則下更容易進行合規說明。
snsapi_userinfo
一種 WeChat OAuth 權限範圍,會傳回使用者的 OpenID、暱稱、頭像、性別和城市,且需要明確的同意畫面。
用於首次顧客註冊,此時分析需要人口統計數據。在 GDPR 和 PIPL 規範下需要記錄合法依據。
PIPL (Personal Information Protection Law)
中國於 2021 年 11 月生效的全面數據隱私法規,旨在規範對位於中國境內之自然人個人資訊的處理。
當場地透過 WeChat OAuth 處理中國公民的數據時適用。需要明確的同意、目的限制、數據最小化和刪除機制。
AppSecret
WeChat 在應用程式註冊期間核發的機密密碼金鑰,用於驗證來自 Portal 伺服器的 API 呼叫。
必須僅儲存在伺服器端。在用戶端 JavaScript 中洩露會使攻擊者能夠冒充應用程式並惡意呼叫 WeChat API。
範例
倫敦一家擁有 400 間客房的奢華酒店,其來自中國大陸的房客在入口網頁(Portal)的流失率高達 60%。目前的入口網頁需要電子郵件和簡訊驗證。IT 總監需要在保持 GDPR 合規性和網路安全性的同時,導入 WeChat 驗證。
步驟 1:在 WeChat 公眾平台 (mp.weixin.qq.com) 註冊服務號,並在 WeChat 開放平台 (open.weixin.qq.com) 註冊網站應用。步驟 2:設定入口網頁以偵測 MicroMessenger 使用者代理(User Agent)字串。若偵測到,則觸發 snsapi_base OAuth 流程以進行無感驗證。若未偵測到,則顯示 QR Code 流程。步驟 3:在 WeChat 登入按鈕啟用前,於入口網頁加入符合 GDPR 規範的隱私權聲明和同意核取方塊。聲明必須載明:收集的數據(僅限 OpenID)、目的(顧客 WiFi 存取和回訪識別)以及保留期限。步驟 4:成功交換 OAuth Token 後,入口網頁伺服器會向 Cisco Meraki 控制器發送 RADIUS CoA 請求,將顧客裝置從驗證前 VLAN 移至隔離的顧客 VLAN。步驟 5:在顧客資料庫中將 OpenID 與裝置 MAC 位址建立關聯並儲存。在後續訪問中,回訪的 OpenID 將觸發無感重新驗證。
某購物中心希望透過顧客 WiFi 獲取中國遊客的性別和城市數據,以匯入其分析平台。他們目前在 HPE Aruba 硬體上運行的現有入口網頁使用的是 MAC 驗證旁路(MAC Authentication Bypass)。
步驟 1:在 WeChat 公眾平台註冊服務號。步驟 2:設定入口網頁使用 snsapi_userinfo 權限範圍以取得性別和城市。步驟 3:加入清晰的同意畫面,說明價值交換:提供免費 WiFi 以換取個人檔案數據的存取權。根據 GDPR 和 PIPL,此同意必須是明確且細緻的。步驟 4:驗證後,入口網頁伺服器會在 RADIUS 資料庫中註冊裝置的 MAC 位址。HPE Aruba 控制器透過 MAB 允許存取。步驟 5:在數據處理登記冊中記錄合法依據(同意)、目的(場地分析和行銷)以及保留期限(24 個月)。提供數據刪除機制。
練習題
Q1. 您正在體育場部署 Captive Portal。您希望先前已驗證過的回訪季票持有者在後續訪問時自動連線,而看不到登入畫面。您應該為重新驗證流程實作哪種 WeChat OAuth 權限範圍?為什麼?
提示:考慮哪種權限範圍允許進行無感驗證,而無需在每次訪問時提示使用者同意。
查看標準答案
使用 snsapi_base。此權限範圍僅傳回使用者的 OpenID 且不需要同意提示,從而實現無感重新驗證。在首次訪問時,您將 OpenID 與球迷的個人檔案關聯並儲存。在後續訪問中,Portal 透過 snsapi_base 偵測回訪的 OpenID,確認比對成功,並發送 RADIUS CoA 以授予存取權限——這一切都無需球迷看到登入畫面。這也符合 GDPR 的數據最小化原則,因為您沒有收集超出驗證功能所需之外的額外數據。
Q2. 在測試期間,您的 Portal 成功重新導向至 WeChat,使用者授予了同意,且 WeChat 重新導向回您的 Portal。然而,Portal 伺服器記錄顯示 OAuth 錯誤 40029(無效的授權碼)。最可能的設定錯誤是什麼?您該如何解決?
提示:WeChat 會根據註冊清單嚴格驗證其發送授權碼的目的地。
查看標準答案
最可能的原因是重新導向 URI 不符。WeChat 會根據平台上註冊的授權網域,驗證 OAuth 請求中的重新導向 URI。如果 Portal 伺服器使用不同的子網域、不同的路徑,或使用 HTTP 而非 HTTPS,則授權碼交換將失敗並顯示錯誤 40029。解決方法:登入 WeChat 開發者平台,導覽至您的服務號或網站應用設定,並新增您使用的每個重新導向 URI 變體——包括測試環境子網域、不同路徑和 HTTPS 版本。確保 OAuth 請求中的 redirect_uri 參數與註冊的 URI 之一完全相符(包括 URL 編碼)。
Q3. 一位 IT 經經理建議將 WeChat AppSecret 嵌入到 Captive Portal 的前端 JavaScript 中,以直接從用戶端瀏覽器加速 Token 交換過程。為什麼您必須拒絕此提議?正確的架構是什麼?
提示:考慮在公開存取的程式碼中洩露密碼金鑰的安全影響。
查看標準答案
拒絕此提議。AppSecret 是一個機密密碼金鑰。將其嵌入用戶端 JavaScript 會將其暴露給任何檢視網頁原始碼或攔截網路流量的人。攻擊者可以擷取 AppSecret 並冒充應用程式,代表場地呼叫 WeChat API、存取使用者數據,並可能使整個公眾號面臨安全風險。正確的架構:用戶端 Portal 網頁從 WeChat 接收授權碼,並透過伺服器端 API 呼叫將其轉發給 Portal 伺服器。Portal 伺服器將 AppSecret 保存在安全的環境變數中,並與 WeChat API 進行 Token 交換。AppSecret 絕不能離開伺服器。
Q4. 一個在歐洲擁有 15 家物業的酒店集團希望建立一個統一的顧客個人檔案,以識別同一個中國房客何時入住不同的物業。每家物業都有自己的 WeChat 公眾號。他們應該使用哪種 WeChat 識別碼?需要進行什麼設定?
提示:OpenID 是特定於帳戶的。有另一個專為跨帳戶設計的識別碼。
查看標準答案
使用 UnionID。OpenID 會因公眾號而異,因此同一個顧客在 15 個帳戶中將擁有 15 個不同的 OpenID。UnionID 是一個穩定的識別碼,代表連結到同一個開放平台帳戶的所有公眾號和應用程式中的使用者。所需的設定:將所有 15 個公眾號連結到單個 WeChat 開放平台帳戶。連結後,當使用者授權至少一個連結的帳戶時,OAuth 回應中就會傳回 UnionID。在顧客 CRM 中將 UnionID 用作主鍵,以建立跨物業的個人檔案,並無論顧客訪問哪家物業都能識別回訪顧客。
繼續閱讀本系列
如何在 Starlink 上設定 Captive Portal:偏遠地區與海事場所指南
本指南詳細介紹如何繞過 Starlink 原生硬體,並使用企業級路由設備整合雲端管理的 Captive Portal。您將學習如何克服 CGNAT 限制、強制執行 VLAN 隔離、管理衛星頻寬限制,並確保符合法規規範。
飯店客房 WiFi 管理:整合 PMS、Captive Portal 與品牌標準
本技術指南詳細介紹如何建構企業級飯店 WiFi 網路,重點關注 VLAN 切割、用於自動化工作階段管理的 PMS 整合,以及符合 GDPR 規範之數據收集的 Captive Portal 最佳化。
Captive Portal 最佳做法:針對高轉換率與合規性的設計
本技術指南為 IT 經理、網路架構師和場域營運總監提供了部署 Captive Portal 的完整藍圖,在網路安全與高用戶轉換率之間取得平衡。內容涵蓋從 VLAN 區隔和 RADIUS 驗證,到符合 GDPR 規範的同意書設計與驗證方法選擇的完整架構。結合 Purple 於 2024 年在 80,000 多個場域和 4.4 億次登入的營運經驗,每項建議均基於真實的部署數據。