gspread 6 proxy-routing til API-kald og tokenfornyelse
Giv gspread en proxybevidst autoriseret session, og konfigurer den separate transport, der bruges til at forny Google-legitimationsoplysninger.
Konfigurer både gspreads autoriserede API-session og transporten til anmodningen om fornyelse af legitimationsoplysninger, når en af dem har brug for proxien:
import requests
import gspread
from google.auth.transport.requests import AuthorizedSession, Request
routes = {
'http': 'http://proxy.example:8080',
'https': 'http://proxy.example:8080',
}
token_session = requests.Session()
token_session.proxies.update(routes)
session = AuthorizedSession(
credentials,
auth_request=Request(session=token_session),
)
session.proxies.update(routes)
client = gspread.Client(auth=credentials, session=session)Dette bruger gspread 6's Client-grænseflade med en medfølgende session og applikationens eksisterende legitimationsoplysninger. Det konfigurerer transport, ikke regnearkstilladelser eller OAuth-omfang. For offentlige API- og tokenendepunkter på en tilladt offentlig rute skal du vælge en uautentificeret HTTP-kandidat fra HTTP-proxylisten til rutekortet. Hold begge sessioner fri for enhver gemt proxykonto, når mellemleddet skiftes.
AuthorizedSession tilføjer legitimationsoplysninger til API-anmodninger og kan forny dem. Uden auth_request kan google-auth oprette endnu en Requests-session til den trafik. Proxystandarder på den autoriserede session konfigurerer ikke den, der oprettes uafhængigt.
Request-adapteren ovenfor leverer bevidst den anden rute. Behold begge sessioner, mens de bruges, og luk derefter eksternt ejede sessioner ved afslutningen af deres anvendelsesområde.
Det er Session-standarder, så sammenfletning af Requests-miljøet kan stadig påvirke dem. Tag højde for nedarvede proxyinput, når en fast rute kræves.
Brug den mislykkede URL til at skelne en afvisning fra regnearket, en proxyudfordring og en fejl ved legitimationsendepunktet. Et cachelagret adgangstoken kan få API-kald til at lykkes uden at fornyelsen overhovedet udføres.