Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

134
Vistas
¿Cómo abro el servicio GoogleSheets con un token de actualización almacenado usando la API de Java v4?

Estoy trabajando en una aplicación (Apache Drill) y busco crear un conector para Hojas de cálculo de Google utilizando la API de Java de Google (v4).

Tengo esto funcionando, sin embargo, me gustaría almacenar el token de actualización y aquí es donde estoy atascado. Aquí está mi código existente:

 public static Credential authorize(GoogleSheetsStoragePluginConfig config) throws IOException, GeneralSecurityException { GoogleClientSecrets clientSecrets = config.getSecrets(); GoogleAuthorizationCodeFlow flow; List<String> scopes = Collections.singletonList(SheetsScopes.SPREADSHEETS); flow = new GoogleAuthorizationCodeFlow.Builder (GoogleNetHttpTransport.newTrustedTransport(), JSON_FACTORY, clientSecrets, scopes) .setDataStoreFactory(config.getDataStoreFactory()) .setAccessType("offline") .build(); return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); } public static Sheets getSheetsService(GoogleSheetsStoragePluginConfig config) throws IOException, GeneralSecurityException { Credential credential = GoogleSheetsUtils.authorize(config); return new Sheets.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), credential) .setApplicationName("Drill") .build(); }

Lo que me gustaría tener es algo como esto:

 public static Sheets getSheetsService(<client secrets>, String refreshToken, String accessToken) { // Not sure what to do here... } Any help would be greatly appreciated.
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La biblioteca del cliente java api de Google está diseñada para manejar todo esto por usted. De manera predeterminada, FileDataStoreFactory almacena todas las credenciales en un archivo en su máquina en DATA_STORE_DIR.

 dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

Si no desea almacenarlo en un archivo, solo necesita crear su propia implementación de AbstractDataStoreFactory que aceptará su token de actualización.

Ejemplo completo de FileDataStoreFactory

 /** * Initializes an authorized sheets service object. * * @return The sheets service object. * @throws IOException * @throws GeneralSecurityException */ private static Sheets initializeAnalyticsReporting() throws GeneralSecurityException, IOException { httpTransport = GoogleNetHttpTransport.newTrustedTransport(); dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR); // Load client secrets. GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(HelloSheets.class .getResourceAsStream(CLIENT_SECRET_JSON_RESOURCE))); // Set up authorization code flow for all authorization scopes. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow .Builder(httpTransport, JSON_FACTORY, clientSecrets, SheetsScopes.all()).setDataStoreFactory(dataStoreFactory) .build(); // Authorize. Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); // Construct the sheets service object. return new Sheets.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda