requests-oauthlib: fetch_token の前に OAuth2Session のプロキシを設定する
トークン取得と保護リソースに同じプロキシ対応セッションを使い、既存の OAuth フローをそのまま保ちます。
from requests_oauthlib import OAuth2Session
session = OAuth2Session(client_id=client_id, redirect_uri=redirect_uri)
session.proxies.update({
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
})OAuth2Session は Requests の Session を拡張します。アプリケーションの既存のクライアント登録、redirect URI、state、scopes で構築し、トークン交換の前にその経路を設定します。公開 HTTP 経路には、HTTP プロキシ一覧の候補がこのセッションのプロキシマップにアドレスを提供します。
このセッションで fetch_token と保護リソースの操作を呼び出します。proxies 引数は fetch_token にのみ渡した場合、その交換にだけ適用され、後続の呼び出しに永続的な経路を設定するものではありません。
ブラウザでの認可ページの閲覧はブラウザの経路を使います。Python はトークン要求を別に行うため、ブラウザでの成功がこのセッションを構成することはありません。
Requests の環境統合はセッションのプロキシ選択に影響することがあります。アプリケーションが管理する厳密な経路では trust_env を確認してください。無効化する場合は、必要な CA や認証の設定も明示的に指定する必要があります。
トークンエンドポイントが返す OAuth エラーは、正常なプロキシ経由で届くことがあります。その応答はプロキシ認証とは別に保持してください。プロキシ認証の資格情報はクライアントシークレットやアクセストークンとは異なります。