Jak uzyskać token offline i token odświeżania i automatycznie odświeżać dostęp do interfejsu API Google
Zajmuję się tworzeniem aplikacji, która uzyskuje dostęp do interfejsów API Google (począwszy od Calendar API) za pomocą OAuth2 i bibliotek klienta google (w Appengine i GWT BTW).
Zaimplementowałem mojeOAuth2Call
tylny serwlet, rozszerzający GoogleAbstractAppEngineAuthorizationCodeCallbackServlet
.
Mam to działa, mam dostęp i mogę przeglądać kalendarze itp., Ale mam dwa problemy:
1) Nie otrzymuję tokena odświeżania, mimo wyraźnego żądania dostępu w trybie offline:
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) Nie widzę, jak ustawić funkcję automatycznego odświeżania. Te strony opisują metody:
Klasa Credential.BuilderKlasa CredentialStoreRefreshListenerAle nie widzę, gdzie dodać słuchacza odświeżania. Nie ma takiej metody wGoogleAuthorizationCodeFlow.Builder
klasa, w przeciwieństwie doCredential.Builder
klasa
EDYTUJ Po debugowaniu kodu więcej, gdy poświadczenie powróci (wonSuccess()
metoda) wydaje się miećRefreshListener
ustawiona już ..... więc może to jest ich domyślnie, a moim jedynym problemem jest to, że nie dostajęrefresh_token
, pomimo proszenia o to.
Może trzeba także przejrzeć ustawienia w konsoli Google API?