Como obter o token off-line e atualizar o token e a atualização automática do acesso à API do Google

Estou desenvolvendo um aplicativo que acessa as APIs do Google (a partir da API do Google Agenda) usando o OAuth2 e as bibliotecas do cliente do Google para isso (no Appengine e no GWT BTW).

Eu implementei meuOAuth2Call servlet de volta, estendendo o GoogleAbstractAppEngineAuthorizationCodeCallbackServlet.

Eu tenho que trabalhar, tenho acesso e posso ver calendários, etc, mas tenho dois problemas:

1) Eu não recebo um token de atualização, apesar de solicitar explicitamente acesso off-line:

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) Não consigo ver como definir a funcionalidade de atualização automática. Estas páginas descrevem os métodos:

Classe Credential.BuilderClasse CredentialStoreRefreshListener

Mas não consigo ver onde adicionar o listener de atualização. Não existe tal método noGoogleAuthorizationCodeFlow.Builder classe, ao contrário doCredential.Builder classe

EDIT Depois de depurar o código mais, quando a credencial volta (noonSuccess() método) parece ter umRefreshListener set já ..... então talvez seja a sua por padrão, e meu único problema é que eu não estou recebendo umrefresh_token, apesar de pedir por isso.

Talvez precise revisar as configurações no Console de APIs do Google também?

questionAnswers(3)

yourAnswerToTheQuestion