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 расширяет Session из Requests. Создайте его с существующей регистрацией клиента приложения, redirect URI, state и scopes, затем задайте маршрут до обмена токена. Для публичного HTTP-маршрута кандидат из списка HTTP-прокси предоставляет адрес в карте прокси этого сеанса.

Вызывайте fetch_token и операции с защищёнными ресурсами в этом сеансе. Аргумент proxies, переданный только в fetch_token, действует для этого обмена; он не устанавливает постоянный маршрут для последующих вызовов.

Посещение страницы авторизации в браузере использует маршрут браузера. Python выполняет запрос токена отдельно, поэтому успех в браузере не настраивает этот сеанс.

Интеграция Requests с окружением может влиять на выбор прокси сеанса. Для строгого маршрута, принадлежащего приложению, проверьте trust_env; его отключение также требует явно задать необходимые параметры CA или аутентификации.

Ошибка OAuth, возвращённая endpoint токена, может прийти через работающий прокси. Храните этот ответ отдельно от аутентификации прокси, учётные данные которой отличаются от client secret и access token.

Похожие статьи