首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

微信公眾號 OAuth2 權限授權:View 型菜單跳轉獲取 Code 參數遺失問題排查

     編輯:程式設計綜合問答

問題現象

構造授權 URL:

https://open.weixin.qq.com/connect/oauth2/authorize?
appid=APPID&redirect_uri=REDIRECT&response_type=code&scope=snsapi_base&state=1#wechat_redirect

其中 REDIRECT 包含查詢參數(如 https://a.com/b/?c=d)。點擊菜單後,微信內打開頁面正常,但複製鏈接發現仍為授權鏈接,未見 code 參數,疑似未回調。

根本原因

微信客戶端內部會攔截並處理授權重定向,完成 code 獲取後自動跳轉回目標頁面(附帶 code 與 state)。用戶在微信內看到的頁面已經是帶 code 的目標頁面,但地址欄顯示的仍是授權鏈接(微信為安全隱藏真實跳轉 URL)。

驗證方法

  1. 在目標頁面(a.com/b)後端打印請求參數,確認收到 code。
  2. 前端 JS 執行 console.log(location.href),可見真實帶 code 的 URL。
  3. 不要在微信外瀏覽器直接訪問授權鏈接(需在微信客戠端內)。

最佳實踐建議

  • redirect_uri **必須 URL 編碼**(encodeURIComponent),特別是包含 `?` `&` `=` 等特殊字符時。
  • 域名需在公眾號後台「網頁授權域名」白名單中(不帶協議與路徑)。
  • 授權頁面盡量輕量,避免重定向鏈過長導致微信客戶端超時。
  • 獲取 code 後立即換 access_token,code 5 分鐘失效、單次使用。

總結

現象屬正常微信行為,非錯誤。後端已收到 code 即流程通順,前端地址欄顯示授權鏈接是微信安全機制所致。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved