Ρυθμίστε και την εξουσιοδοτημένη συνεδρία API του gspread και τη μεταφορά του αιτήματος ανανέωσης διαπιστευτηρίων όταν κάποια από τις δύο χρειάζεται τον διαμεσολαβητή:

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)

Αυτό χρησιμοποιεί τη διεπαφή Client του gspread 6 με παρεχόμενη συνεδρία και τα υπάρχοντα διαπιστευτήρια της εφαρμογής. Ρυθμίζει τη μεταφορά, όχι τα δικαιώματα του υπολογιστικού φύλλου ή τα εύρη OAuth. Για δημόσια τελικά σημεία API και διακριτικών σε επιτρεπόμενη δημόσια διαδρομή, επιλέξτε έναν μη πιστοποιημένο υποψήφιο HTTP από τη λίστα διαμεσολαβητών HTTP για τον χάρτη διαδρομών. Κρατήστε και τις δύο συνεδρίες χωρίς κανέναν αποθηκευμένο λογαριασμό διαμεσολαβητή όταν αλλάζετε τον ενδιάμεσο.

Το AuthorizedSession προσθέτει διαπιστευτήρια στα αιτήματα API και μπορεί να τα ανανεώσει. Χωρίς το auth_request, το google-auth μπορεί να δημιουργήσει άλλη συνεδρία Requests για αυτή την κίνηση. Οι προεπιλογές διαμεσολαβητή στην εξουσιοδοτημένη συνεδρία δεν ρυθμίζουν αυτή που δημιουργείται ανεξάρτητα.

Ο προσαρμογέας Request παραπάνω παρέχει σκόπιμα αυτή τη δεύτερη διαδρομή. Διατηρήστε και τις δύο συνεδρίες όσο χρησιμοποιούνται και μετά κλείστε τις συνεδρίες που ανήκουν εξωτερικά στο τέλος του πεδίου εφαρμογής τους.

Αυτές είναι προεπιλογές Session, οπότε η συγχώνευση περιβάλλοντος του Requests μπορεί ακόμη να τις επηρεάσει. Λάβετε υπόψη τις κληρονομημένες εισόδους διαμεσολαβητή όταν απαιτείται σταθερή διαδρομή.

Χρησιμοποιήστε τη διεύθυνση URL που απέτυχε για να ξεχωρίσετε μια άρνηση του υπολογιστικού φύλλου, μια πρόκληση του διαμεσολαβητή και μια αποτυχία του τελικού σημείου διαπιστευτηρίων. Ένα διακριτικό πρόσβασης στην προσωρινή μνήμη μπορεί να κάνει τις κλήσεις API να πετύχουν χωρίς να εκτελεστεί καθόλου ανανέωση.

Σχετικά άρθρα