Authlib 代理设置:Requests 与 HTTPX 的差异
根据所使用的 Authlib 集成选择 Requests 会话代理或 HTTPX 客户端的 proxy 参数。
在选择代理参数之前,先确认导入的是哪种 Authlib。它的 Requests 与 HTTPX 集成提供的传输配置并不相同。
Requests 的 OAuth2Session 继承 Requests 的 Session 行为:
from authlib.integrations.requests_client import OAuth2Session
client = OAuth2Session(client_id=client_id)
client.proxies.update({
"http": "http://proxy.example.net:8080",
"https": "http://proxy.example.net:8080",
})
对应的异步 HTTPX 集成则在构造时接收客户端级别的 proxy 参数:
from authlib.integrations.httpx_client import AsyncOAuth2Client
client = AsyncOAuth2Client(
client_id=client_id,
proxy="http://proxy.example.net:8080",
)
HTTPX 示例使用 Authlib 1.9.1 支持的单个 proxy 选项。该集成会把可识别的传输选项传给底层的 HTTP 客户端。Requests 风格的 proxies 字典不能作为构造参数互换使用。对于允许的公共代理路由上的公开 token 与 API 端点,HTTP 代理列表 可为两个示例中的 HTTP 代理 URL 提供候选。
应用任一配置时,请保留应用现有的 OAuth 注册、redirect URI、scopes 与 token 处理方式。用配置好的客户端执行 token 与受保护资源操作,并按其通常的同步或异步生命周期关闭它。
框架辅助工具可能代为创建这些客户端。在传入请求期参数之前,先查看该辅助工具所用的集成和客户端构造选项。Requests 的 token 请求接受 proxies 关键字,并不说明异步的 HTTPX 请求也接受它。