para google documentos desarrolladores google-drive-sdk

google-drive-sdk - documentos - google drive para desarrolladores



La carga de la API de Google Drive devuelve el ID/título del archivo, pero el documento no existe en Drive (1)

Al usar cuentas de servicio, el archivo insertado se agregará a la cuenta de Drive de la aplicación para la que no hay Drive UI. Esos archivos solo están disponibles a través de la API.

He seguido los ejemplos que figuran en el sitio SDK de Google Drive para la Autorización a través de Cuentas de servicio (https://developers.google.com/drive/service-accounts) y para insertar un archivo (https://developers.google.com/ unidad / v2 / referencia / archivos / insertar). Logré hacerlo funcionar usando Client ID / Client secret con oauth2 pero necesito automatización, así que quiero usar la clave privada.

Mi problema es que recibo una identificación de archivo, título, descripción y tipo MIME a cambio, por ejemplo, ID de archivo:% s0B6ysbMIcH3AGWHJPRmZUTVZZMnM, título: Mi documento, Descripción: documento de prueba, tipo MIME: texto / normal pero el documento no-existe en Drive y no se devuelve ningún error.

He trabajado en esto durante 2 días sin éxito y realmente agradecería cualquier ayuda. He buscado en línea y los ejemplos que he encontrado son similares a los de abajo. He intentado con varias cuentas de Google (una de una compañía, Google Apps y otra, una cuenta de Gmail normal con el mismo resultado).

El código (con la información de la cuenta modificada):

public class AutoGoogleDrive { private static final String SERVICE_ACCOUNT_PKCS12_FILE_PATH = "/home/jsmith/Java/11111111111111111111111111-privatekey.p12"; private static final String SERVICE_ACCOUNT_EMAIL = "[email protected]"; public static Drive getDriveService() throws GeneralSecurityException, IOException, URISyntaxException { HttpTransport httpTransport = new NetHttpTransport(); JacksonFactory jsonFactory = new JacksonFactory(); GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(jsonFactory) .setServiceAccountId(SERVICE_ACCOUNT_EMAIL) .setServiceAccountScopes(DriveScopes.DRIVE_FILE) .setServiceAccountPrivateKeyFromP12File( new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH)) .build(); Drive service = new Drive.Builder(httpTransport, jsonFactory, null) .setHttpRequestInitializer(credential).build(); return service; } public static void main(String[] args) throws IOException { Drive service = null; try { service = getDriveService(); } catch (GeneralSecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (URISyntaxException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Insert a text file File body = new File(); body.setTitle("My document"); body.setDescription("A test document"); body.setMimeType("text/plain"); // File''s content. java.io.File fileContent = new java.io.File("/home/jsmith/document.txt"); FileContent mediaContent = new FileContent("text/plain", fileContent); try { File file = service.files().insert(body, mediaContent).execute(); // Uncomment the following line to print the File ID. System.out.println("File ID: %s" + file.getId()); System.out.println("Title: " + file.getTitle()); System.out.println("Description: " + file.getDescription()); System.out.println("MIME type: " + file.getMimeType()); } catch (IOException e) { System.out.println("An error occured: " + e); } } }

Gracias,

Joe Smith