在选择代理参数之前,先确认导入的是哪种 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 请求也接受它。

相关文章