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

微博第三方登入取得 code 失敗:常見原因與調試步驟

     編輯:程式設計疑難解答

授權網址 https://api.weibo.com/2/oauth2/authorize?client_id=3678297756&redirect_uri=https://www.sina.com&response_type=code 打開後無法取得 code 參數,通常是以下四大原因:

1. redirect_uri 必須完全一致

  • 微博開放平台「應用資訊 → 進階資訊 → 授權設定」裡填寫的回調網址,必須與請求參數 字元級完全相同(含 http/https、埠號、路徑、查詢字串)。
  • 例:後台填 https://www.example.com/callback,請求卻傳 https://www.example.com/callback/ (多斜線) → 會導致授權頁顯示「redirect_uri 不匹配」或直接不回傳 code。

2. 應用審核狀態

  • 新建應用預設為「開發中」,僅允許「測試用戶」登入。需在「應用資訊 → 應用審核」提交審核通過,或將測試帳號加入「測試用戶」白名單。

3. 安全域名 / 白名單設定

  • 「進階資訊 → 安全域名」需填寫授權頁域名 (如 www.example.com);若使用 IP 或 localhost,請填 127.0.0.1 或對應 IP。

4. 參數編碼與攜帶

  • redirect_uri 必須 URLEncode:http%3A%2F%2Fwww.example.com%2Fcallback。
  • 若在 WebView 內授權,確保 User-Agent、Cookie 正常,否則微博可能攔截並不回調。

調試檢查清單

  1. 瀏覽器直接打開授權網址 → 觀察是否跳轉到 redirect_uri?code=xxxx。
  2. 若跳轉成功但無 code → 檢查網址列是否有 error=... 參數(如 error=redirect_uri_mismatch)。
  3. 用 Charles/Fiddler 抓包,確認 302 Location 標頭是否正確。
  4. 對照官方文件:https://open.weibo.com/wiki/Oauth2/authorize。

參考完整流程代碼 (Java)

String authUrl = "https://api.weibo.com/oauth2/authorize?" +
    "client_id=" + CLIENT_ID +
    "&redirect_uri=" + URLEncoder.encode(REDIRECT_URI, "UTF-8") +
    "&response_type=code" +
    "&scope=all" +
    "&state=" + UUID.randomUUID().toString(); // 防 CSRF
// 導向 authUrl,用戶授權後回調 REDIRECT_URI?code=xxx&state=xxx
// 後端用 code 換 access_token

逐項核對上述四點,90% 的「拿不到 code」問題都能解決。

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