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。用应用现有的 client registration、redirect URI、state 和 scopes 构建它,然后在令牌交换之前设置其路由。对于公共 HTTP 路由,HTTP 代理列表中的候选会为该会话的代理映射提供地址。
在该会话上调用 fetch_token 以及受保护资源的操作。proxies 参数仅传给 fetch_token 时只对该次交换生效;它不会为后续调用建立持久路由。
浏览器访问授权页面时使用浏览器的路由。Python 单独发出令牌请求,因此浏览器中的成功并不会配置该会话。
Requests 的环境集成可能影响会话的代理选择。对于由应用严格掌控的路由,请检查 trust_env;禁用它还需要显式提供任何必要的 CA 或认证设置。
令牌端点返回的 OAuth 错误可能经由可用的代理到达。请将该响应与代理认证分开保存,因为代理凭据与客户端密钥和访问令牌不同。