
全面掌握 OpenAPI 規范:定義、生成與集成指南
認證方式 | 場景 | 特點 |
---|---|---|
OAuth 1.0a | 需要用戶上下文的讀寫操作 | 使用 Consumer Key/Secret + Access Token/Secret,適合 CLI/后臺服務 |
OAuth 2.0 Bearer | 僅獲取公開資源 | 簡單的 Bearer Token,僅限讀操作 |
OAuth 2.0 PKCE | Web 與 Mobile 端的第三方登錄 | 更安全的授權碼流程,支持最小 scope 控制與刷新令牌 |
獲取請求令牌
POST https://api.twitter.com/oauth/request_token
用戶授權
GET https://api.twitter.com/oauth/authorize?oauth_token=...
交換訪問令牌
POST https://api.twitter.com/oauth/access_token
示例使用 Python requests-oauthlib
庫:
from requests_oauthlib import OAuth1Session
client = OAuth1Session(CONSUMER_KEY, client_secret=CONSUMER_SECRET)
# 步驟1
req_token = client.fetch_request_token('https://api.twitter.com/oauth/request_token')
# 步驟2:引導用戶訪問
print(f"請訪問: https://api.twitter.com/oauth/authorize?oauth_token={req_token['oauth_token']}")
verifier = input("輸入回調獲得的 oauth_verifier: ")
# 步驟3
client = OAuth1Session(CONSUMER_KEY, client_secret=CONSUMER_SECRET,
resource_owner_key=req_token['oauth_token'],
resource_owner_secret=req_token['oauth_token_secret'],
verifier=verifier)
access_token = client.fetch_access_token('https://api.twitter.com/oauth/access_token')
print("Access Token:", access_token)
> 長尾關鍵詞:Twitter OAuth1.0a 實現、requests-oauthlib 示例
curl -X POST "https://api.twitter.com/oauth2/token" \
-H "Authorization: Basic $(echo -n "$KEY:$SECRET" | base64)" \
-d "grant_type=client_credentials"
響應中即包含 "access_token"
,后續請求在 header 中使用:
Authorization: Bearer YOUR_BEARER_TOKEN
import requests
headers = {"Authorization": f"Bearer {BEARER_TOKEN}"}
resp = requests.get("https://api.twitter.com/2/tweets/search/recent?query=#AI", headers=headers)
print(resp.json())
> 核心關鍵詞:Twitter Bearer Token、公開數據調用、熱門話題抓取
引導用戶授權:
GET https://twitter.com/i/oauth2/authorize?response_type=code&client_id=...&redirect_uri=...&code_challenge=...&code_challenge_method=S256&scope=...
交換 access_token:
POST https://api.twitter.com/2/oauth2/token
-d grant_type=authorization_code
-d code=RECEIVED_CODE
-d redirect_uri=...
-d code_verifier=ORIGINAL_VERIFIER
-u "CLIENT_ID:CLIENT_SECRET"
import secrets, hashlib, base64, requests
verifier = secrets.token_urlsafe(64)
challenge = base64.urlsafe_b64encode(hashlib.sha256(verifier.encode()).digest()).decode().rstrip('=')
auth_url = (
"https://twitter.com/i/oauth2/authorize?" +
f"response_type=code&client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}"
f"&scope=tweet.read%20tweet.write%20users.read&state=state&code_challenge={challenge}&code_challenge_method=S256"
)
print("訪問授權鏈接:", auth_url)
code = input("輸入授權返回的 code: ")
token_resp = requests.post(
"https://api.twitter.com/2/oauth2/token",
auth=(CLIENT_ID, CLIENT_SECRET),
data={
"grant_type":"authorization_code",
"code":code,
"redirect_uri":REDIRECT_URI,
"code_verifier":verifier
}
)
token = token_resp.json()["access_token"]
> 相關關鍵詞:Twitter OAuth2.0 PKCE、Mobile App 授權、代碼示例
state
參數一致性,防止重放攻擊本文深入剖析了 Twitter API Key 的三種 OAuth 認證與授權機制,結合實戰示例和 YouTube 視頻教程,幫助開發者快速:
掌握這些認證方式后,你就能靈活調用 X API,構建輿情監測、社交登錄以及智能推文工具。
原文引自YouTube視頻:
https://www.youtube.com/watch?v=6n0NQW7EMbU
https://www.youtube.com/watch?v=4sDOwFdMDIo