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