2017-05-15 3 views
0

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:

  1. überprüfen, ob die Ablaufzeit des Zugriffstoken ist weniger als 6 Minuten
  2. wenn ja, erzeugen dann den neuen Zugriffstoken

Antwort

0

Im Folgenden finden Sie den Code zum Ermitteln der verbleibenden Zeit für das Ablaufen des Tokens und zum Generieren des neuen Zugriffstokens:

c Heck, wenn die Ablaufzeit des Zugriffstoken ist weniger als 6 Minuten

credential.getExpiresInSeconds() 

wenn ja, erzeugen dann den neuen Zugriffstoken

credential.refreshToken() 
Verwandte Themen