Ich habe ein Google Apps-Skript, das als ausführbare API bereitgestellt wird. Ich kann es von meiner Java-basierten Web-Anwendung aufrufen. Aber es scheitert nur manchmal mit Authorization is required to perform that operation
. Ich habe die Analyse durchgeführt und festgestellt, dass dies fehlschlägt, weil Apps Script diesen Fehler zurückgibt, wenn die Ablaufzeit des Zugriffstokens weniger als 6 Minuten beträgt. Es gibt einen Grund, warum Apps Script sich so verhält, was den Rahmen dieser Frage sprengen würde. Die Lösung besteht darin, eine neue access_token
zu generieren, wenn die Ablaufzeit weniger als 6 Minuten beträgt.Erkennung des Tokenablaufs beim Zugriff auf Google-APIs
Ich bin mit Java Google-Client-Bibliothek die Zugriffstoken verwalten:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setClientSecrets("<<clientId>>", "<<clientSecret>>")
.build();
credential.setRefreshToken("<<refresh_token>>");
Unter Verwendung der oben credential
Ich schaffe das Script
Objekt:
Script scriptService = new Script.Builder(httpTransport, jsonFactory, credential).setApplicationName("test").build();
Rufen Sie die Apps Script:
scriptService.scripts().run("test script");
Die Client-Bibliothek kümmert sich um die Generierung des Zugriffs token, speichert sie im Speicher und aktiviert bei Ablauf die OAuth-API, um ein neues Token zu generieren.
Nun, ich würde benötigen suggetions zu:
- überprüfen, ob die Ablaufzeit des Zugriffstoken ist weniger als 6 Minuten
- wenn ja, erzeugen dann den neuen Zugriffstoken