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

新浪微博 API 開發入門:PHP 實現 OAuth 2.0 用戶授權完整流程

     編輯:PHP 綜合知識

前言:為什麼選擇新浪微博開放平台?

作為國內早期開放的社交平台,新浪微博提供了完善的 開發者平台,包含詳細的 API 文檔、多語言 SDK(PHP/Java/Python 等)及 Demo 範例。本文基於 PHP SDK,梳理 OAuth 2.0 授權碼模式的完整落地流程。

開發前準備

  1. 註冊應用:登錄開放平台 → 「我的應用」→ 創建應用 → 獲取 App Key (WB_AKEY) 和 App Secret (WB_SKEY)。
  2. 下載 SDK:官方推薦 weibo-oauth-class-with-image-avatar 包,解壓放入項目目錄。
  3. 配置回調域:在應用設置中填寫授權回調頁(如 https://yourdomain.com/callback.php),必須與代碼中一致。

OAuth 2.0 三步走授權流程

核心類:WeiboOAuth(SDK 內置)。

步驟 1:獲取未授權的 Request Token

<?php
require_once 'path/to/weibooauth.php'; // SDK 入口

$o = new WeiboOAuth(WB_AKEY, WB_SKEY);
$keys = $o->getRequestToken(); // 返回 ['oauth_token', 'oauth_token_secret']

// 必須存入 Session,後續換 Access Token 時需用
session_start();
$_SESSION['oauth_keys'] = $keys;

步驟 2:導向用戶授權頁

$authorize_url = $o->getAuthorizeURL($keys['oauth_token'], false, 'https://yourdomain.com/callback.php');
header("Location: $authorize_url");
exit();
  • 用戶在新浪登錄並點擊「授權」。
  • 授權後自動跳回 callback.php,URL 會攜帶 oauth_verifier 參數。
  • 關鍵坑:$_SESSION['oauth_keys'] 必須在步驟 1 正確保存,否則步驟 3 會因缺少 token 失敗。

步驟 3:換取 Access Token(長效憑證)

<?php // callback.php
session_start();
require_once 'path/to/weibooauth.php';

$o = new WeiboOAuth(
    WB_AKEY,
    WB_SKEY,
    $_SESSION['oauth_keys']['oauth_token'],
    $_SESSION['oauth_keys']['oauth_token_secret']
);

$last_key = $o->getAccessToken($_REQUEST['oauth_verifier']);
// $last_key 包含:oauth_token, oauth_token_secret, uid 等

// 建議:存入用戶表,關聯本地用戶 ID,避免重複授權
// saveToDB($user_id, $last_key);

授權後:調用 API 獲取數據

使用 WeiboClient 類,攜帶 Access Token 即可調用各業務接口:

$c = new WeiboClient(WB_AKEY, WB_SKEY, $oauth_token, $oauth_token_secret);
$msg = $c->public_timeline(); // 獲取公共時間線最新 20 條微博

if ($msg === false || isset($msg['error_code'])) {
    // 錯誤處理:token 過期、頻率限制、參數錯誤等
    logError($msg);
    return;
}

// 返回通常為 JSON 格式,直接 json_decode() 轉陣列
$data = json_decode($msg, true);
print_r($data);

最佳實踐與避坑指南

  1. Token 存儲安全:Access Token 等同於用戶密碼,加密存儲,嚴禁日誌輸出、前端暴露。
  2. Token 過期處理:新浪 Access Token 長期有效,但用戶可手動撤銷授權。API 返回 error_code: 21327 (expired token) 時,需引導用戶重新授權。
  3. 頻率限制:接口有調用配額(如 public_timeline 150 次/小時/IP),生產環境必須做緩存、佇列削峰。
  4. HTTPS 強制:所有授權、API 請求必須走 HTTPS,防止中間人竊聽 Token。
  5. SDK 版本維護:官方 SDK 更新較慢,建議 Fork 並自行維護,或改用成熟的第三方庫(如 overtrue/weibo)。

總結

新浪微博 OAuth 2.0 流程核心在於:Request Token → 用戶授權 → Access Token 三步換證。關鍵點在於 Session 狀態保持、回調域一致性、Token 持久化存儲。掌握此流程,即可快速接入微博登錄、分享、數據分析等功能。

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