API 호출과 토큰 갱신을 위한 gspread 6 프록시 라우팅
gspread에 프록시를 인식하는 인증 세션을 제공하고 Google 자격 증명 갱신에 쓰이는 별도 전송을 구성합니다.
둘 중 하나라도 프록시가 필요할 때 gspread의 인증된 API 세션과 자격 증명 갱신 요청 전송을 함께 구성합니다:
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)이 코드는 전달한 세션과 애플리케이션의 기존 자격 증명으로 gspread 6의 Client 인터페이스를 사용합니다. 구성하는 것은 전송이며 스프레드시트 권한이나 OAuth 범위가 아닙니다. 허용된 공개 경로에 있는 공개 API와 토큰 엔드포인트에는 경로 맵을 위해 HTTP 프록시 목록에서 인증되지 않은 HTTP 후보를 고르십시오. 중계자를 바꿀 때는 두 세션 모두에 저장된 프록시 계정을 남기지 마십시오.
AuthorizedSession는 API 요청에 자격 증명을 추가하고 이를 갱신할 수 있습니다. auth_request가 없으면 google-auth가 해당 트래픽을 위해 별도의 Requests 세션을 만들 수 있습니다. 인증 세션의 프록시 기본값은 독립적으로 만들어진 세션을 구성하지 않습니다.
위의 Request 어댑터는 그 두 번째 경로를 의도적으로 제공합니다. 사용하는 동안 두 세션을 유지하고, 애플리케이션 범위가 끝날 때 외부 소유 세션을 닫으십시오.
이들은 Session 기본값이므로 Requests 환경 병합이 여전히 영향을 줄 수 있습니다. 고정 경로가 필요할 때는 상속된 프록시 입력을 고려하십시오.
실패한 URL을 사용해 스프레드시트 거부, 프록시 인증 요구, 자격 증명 엔드포인트 장애를 구분하십시오. 캐시된 액세스 토큰이 있으면 갱신을 전혀 수행하지 않고도 API 호출이 성공할 수 있습니다.