So erhalten Sie Offline-Token und Aktualisierungs-Token sowie den automatischen Zugriff auf die Google API

Ich entwickle eine App für den Zugriff auf Google-APIs (beginnend mit der Kalender-API) mit OAuth2 und den Google-Client-Bibliotheken dafür (Appengine und GWT BTW).

Ich habe meine implementiertOAuth2Call Servlet zurück, Erweiterung der GoogleAbstractAppEngineAuthorizationCodeCallbackServlet.

Ich habe es funktioniert, ich bekomme Zugriff und kann Kalender usw. ansehen, habe aber zwei Probleme:

1) Ich erhalte kein Aktualisierungstoken, obwohl ich ausdrücklich den Offline-Zugriff anfordere:

public static GoogleAuthorizationCodeFlow newFlow( String scope ) throws IOException {
    GoogleAuthorizationCodeFlow.Builder builder = new GoogleAuthorizationCodeFlow.Builder(
            HTTP_TRANSPORT, 
            JSON_FACTORY,
            getClientSecrets(), 
            Collections.singleton( scope ) );

    builder.setCredentialStore( new AppEngineCredentialStore() ).setAccessType("offline");

    return builder.build();
}

2) Ich kann die automatische Aktualisierung nicht einstellen. Diese Seiten beschreiben die Methoden:

Klasse Credential.BuilderKlasse CredentialStoreRefreshListener

Ich kann jedoch nicht sehen, wo der Aktualisierungs-Listener hinzugefügt werden soll. Es gibt keine solche Methode in derGoogleAuthorizationCodeFlow.Builder Klasse, im Gegensatz zu derCredential.Builder Klasse

BEARBEITEN Nach dem Debuggen des Codes mehr, wenn der Berechtigungsnachweis zurückkommt (in deronSuccess() Methode) es scheint eineRefreshListener schon eingestellt ..... also vielleicht ist das ihre Standardeinstellung, und mein einziges Problem ist, dass ich keine bekommerefresh_token, obwohl ich darum gebeten habe.

Müssen Sie möglicherweise auch die Einstellungen in der Google API Console überprüfen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage