Sei sulla pagina 1di 5

Uso de la API del ncleo de Java

El API Core est basado en HTTP y OAuth y proporciona llamadas de bajo nivel para acceder y manipular cuenta de Dropbox de un usuario. Si quieres seguir adelante, primero registrarse una nueva aplicacin en la App consola. Usted necesitar la llave aplicacin para acceder a la API de Core. A continuacin, instale el SDK de Java y estar listo para funcionar.

Autenticacin de su aplicacin
El API Core utiliza OAuth v2, pero el SDK Java se har cargo de la mayor parte de lo que no tiene que empezar de cero. Usted tendr que proporcionar su clave de aplicacin y secreto para el nuevo objeto DbxWebAuthNoRedirect.

// Include the Dropbox SDK. import com.dropbox.core.*; import java.io.*; import java.util.Locale; public class Main { public static void main(String[] args) throws IOException, DbxException { // Get your app key and secret from the Dropbox developers website. final String APP_KEY = "INSERT_APP_KEY"; final String APP_SECRET = "INSERT_APP_SECRET"; DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET); DbxRequestConfig config = new DbxRequestConfig( "JavaTutorial/1.0", Locale.getDefault().toString()); DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);

Ahora estamos listos para iniciar el flujo de OAuth. El flujo de OAuth tiene dos partes: 1. Preguntar al usuario para autorizar la vinculacin de su aplicacin a su cuenta de Dropbox. 2. Una vez autorizada, cambiar el cdigo de autorizacin recibida para un token de acceso, que se utiliza para llamar a la API Core. Vamos a empezar con el objeto DbxWebAuthNoRedirect para generar una URL de autorizacin con el mtodo de inicio.
authorizeUrl = webAuth.start()

Con la autorizacin de URL en la mano, podemos pedir al usuario que autorice su aplicacin. Para evitar la molestia de instalar un servidor web en este tutorial, slo estamos imprimiendo la URL y pide al usuario que pulse la tecla para confirmar que han autorizado su aplicacin Intro. Sin embargo, en aplicaciones del mundo real, usted desea enviar automticamente al usuario a la URL de la autorizacin y pase una URL de devolucin de llamada para que el usuario se redirige a la perfeccin su aplicacin despus de pulsar un botn.

// Have the user sign in and authorize your app. String authorizeUrl = webAuth.start(); System.out.println("1. Go to: " + authorizeUrl); System.out.println("2. Click "Allow" (you might have to log in first)"); System.out.println("3. Copy the authorization code."); String code = new BufferedReader(new InputStreamReader(System.in)).readLine().trim();

Una vez que el usuario ha entregado el cdigo de autorizacin de nuestra aplicacin, podemos intercambiar que codifican para una seal de acceso a travs de acabado:
DbxAuthFinish authFinish = webAuth.finish(code);

El token de acceso es todo lo que necesita para hacer solicitudes de la API por parte de este usuario, por lo que debe almacenar lejos para su custodia (a pesar de que no lo hacemos en este tutorial). Al almacenar el token de acceso, usted no tendr que ir a travs de estos pasos de nuevo a menos que el usuario vuelve a instalar la aplicacin o revoca el acceso a travs del sitio web de Dropbox. Ahora que la parte ms difcil se hace, todo lo que necesitamos hacer para autorizar a nuestras llamadas a la API es para pasar el testigo de acceso a DbxClient. Para probar que tenemos acceso a la API del ncleo, vamos a tratar de llamar getAccountInfo, que devolver un diccionario con informacin sobre la cuenta vinculada del usuario:
DbxClient client = new DbxClient(config, authFinish.accessToken); System.out.println("Linked account: " + client.getAccountInfo().displayName);

Si has llegado hasta aqu, ahora tiene una aplicacin simple que utiliza la API de Core para vincular a una cuenta de Dropbox y hacer una llamada a la API para recuperar informacin de la cuenta. A continuacin, vamos a cargar un archivo en Dropbox, obtener sus metadatos, y luego bajamos de nuevo a nuestra aplicacin.

Carga de archivos
Digamos que estamos construyendo una aplicacin de edicin de texto y queremos utilizarlo para guardar su ltimo opus magnum de Dropbox. Vamos a navegar a los mtodos de la documentacin DbxClient para ver cul va a hacer eso por nosotros. Esta pgina muestra todos los mtodos admitidos en el SDK. Si se desplaza hacia abajo, usted encontrar UploadFile. UploadFile toma un camino que apunta hacia donde queremos que el archivo en nuestro Dropbox, y despus un objeto o una cadena de tipo fichero a subir all. Para este ejemplo, vamos a subir una copia local de trabajo-draft.txt:
File inputFile = new File("working-draft.txt"); FileInputStream inputStream = new FileInputStream(inputFile); try { DbxEntry.File uploadedFile = client.uploadFile("/magnum-opus.txt", DbxWriteMode.add(), inputFile.length(), inputStream); System.out.println("Uploaded: " + uploadedFile.toString()); } finally { inputStream.close(); }

Si todo va bien, los datos de su trabajo-draft.txt locales estarn ahora en la raz de la carpeta de aplicacin (o la carpeta Dropbox, dependiendo del tipo de acceso de su aplicacin). El archivo Subido variable contendr los metadatos del archivo recin subido. Se ver algo como esto:
File { "/magnum-opus.txt" iconName = "page_white_text" mightHaveThumbnail = false numBytes = 14 humanSize = "14 bytes" lastModified = "2013/08/23 02:25:49 UTC" clientMtime = "2013/08/23 02:25:49 UTC" rev = "1312e120be" }

Carpetas Listing
Si usted hojear las diferentes entradas de los metadatos anteriormente, obtendr un buen sentido de toda la informacin que se desprende de los archivos. Usted puede obtener esta informacin de una carpeta completa mediante la llamada getMetadataWithChildren.

DbxEntry.WithChildren listing = client.getMetadataWithChildren("/"); System.out.println("Files in the root path:"); for (DbxEntry child : listing.children) { System.out.println(" " + child.name + ": " + child.toString()); }

El objeto devuelto ser una lista de los archivos y carpetas en la ruta dada, incluidos sus metadatos. Enumeracin ellos, vers algo como esto:
Files in the root path: magnum-opus.txt: File("/magnum-opus.txt", iconName="page_white_text", mightHaveThumbnail=false, numBytes=14, humanSize="14 bytes", lastModified="2013/08/23 02:25:49 UTC", clientMtime="2013/08/23 02:25:49 UTC", rev="1312e120be")

En el ejemplo anterior, la carpeta raz aplicacin contiene el archivo que acaba de cargar nombramos magnum-opus.txt. Ver varios bits de informacin como la ubicacin exacta del archivo, el tamao del archivo, fecha de ltima modificacin, y mucho ms.

Descarga de archivos
Ha pasado algn tiempo y ya est listo para comenzar a editar esa obra magna de la suya de nuevo. Necesitaremos el mtodo getFile para descargar el archivo.

FileOutputStream outputStream = new FileOutputStream("magnumopus.txt"); try { DbxEntry.File downloadedFile = client.getFile("/magnum-opus.txt", null, outputStream); System.out.println("Metadata: " + downloadedFile.toString()); } finally { outputStream.close(); }

Adems de escribir el archivo en el flujo de salida, el mtodo tambin devuelve los metadatos del archivo en su versin actual. Cada vez que se realiza un cambio en el archivo, el campo de revoluciones de los metadatos del archivo cambia tambin. Si guarda la revisin al descargar el archivo, podrs saber si el archivo ha sido modificado por otro equipo o dispositivo y optar por descargar la nueva revisin de ese archivo.

El cdigo completo
Para aquellos que llevan la cuenta en casa, aqu est el cdigo fuente completo de esta gua. Asegrese de crear un archivo de trabajo-draft.txt para conseguir que funcione plenamente. Asimismo, recuerda que insertar su clave aplicacin, app secreto, y el tipo de acceso.

// Include the Dropbox SDK. import com.dropbox.core.*; import java.io.*; import java.util.Locale; public class Main { public static void main(String[] args) throws IOException, DbxException { // Get your app key and secret from the Dropbox developers website. final String APP_KEY = "INSERT_APP_KEY"; final String APP_SECRET = "INSERT_APP_SECRET"; DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET); DbxRequestConfig config = new DbxRequestConfig("JavaTutorial/1.0", Locale.getDefault().toString()); DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo); // Have the user sign in and authorize your app. String authorizeUrl = webAuth.start(); System.out.println("1. Go to: " + authorizeUrl); System.out.println("2. Click "Allow" (you might have to log in first)"); System.out.println("3. Copy the authorization code.");

String code = new BufferedReader(new InputStreamReader(System.in)).readLine().trim(); // This will fail if the user enters an invalid authorization code. DbxAuthFinish authFinish = webAuth.finish(code); DbxClient client = new DbxClient(config, authFinish.accessToken); System.out.println("Linked account: " + client.getAccountInfo().displayName); File inputFile = new File("working-draft.txt"); FileInputStream inputStream = new FileInputStream(inputFile); try { DbxEntry.File uploadedFile = client.uploadFile("/magnumopus.txt", DbxWriteMode.add(), inputFile.length(), inputStream); System.out.println("Uploaded: " + uploadedFile.toString()); } finally { inputStream.close(); } DbxEntry.WithChildren listing = client.getMetadataWithChildren("/"); System.out.println("Files in the root path:"); for (DbxEntry child : listing.children) { System.out.println(" " + child.name + ": " + child.toString()); } FileOutputStream outputStream = new FileOutputStream("magnumopus.txt"); try { DbxEntry.File downloadedFile = client.getFile("/magnumopus.txt", null, outputStream); System.out.println("Metadata: " + downloadedFile.toString()); } finally { outputStream.close(); } } }

Prximos pasos

Y con eso se debe estar equipado con casi todo lo que necesita para empezar a trabajar con la API de Core. Si usted an no est seguro de algo, el foro de desarrolladores es un gran lugar para encontrar informacin y obtener ayuda de compaeros desarrolladores. Buena suerte!

Potrebbero piacerti anche