APIs e Microsserviços

7 fev, 2014

DrobpoxAPI – Conectando com Dropbox API Java

Publicidade

Olá, pessoal!

Hoje quero compartilhar uma experiência bem bacana que tive com a API do Dropbox. Estou trabalhando em um projeto novo e vamos usar alguns recursos do DropBox como ferramenta  para poder automatizar alguns processos e facilitar a vida do usuário. A ideia deste artigo é mostrar como conectar sua aplicação com o DropBox.

No início foi meio confuso de entender como funcionava a documentação do Dropbox. É até boa, mas o tutorial não é muito objetivo. Levei algumas horas para entender nos detalhes como realmente as coisas funcionavam, até porque na primeira versão sempre que eu parava e iniciava a aplicação, o code da autorização precisava ser gerado de novo. Veja os passos que precisamos fazer antes de colocar a mão no código:

  • Ir no https://www.dropbox.com/developers/apps e create app. Daí é só seguir os passos e ir respondendo as perguntas. Não tem erro aqui, uma vez que bem diretas. No meu caso, usei a opção Full Access e permiti que a aplicação acessasse os arquivos já existentes. Claro que você precisa estar logado no Dropbox.

dropboxapiappcreated

  • Ao clicar na app que foi criada, teremos dois caras importantes, veja:

dropboxkeygenerated

Precisamos dessas keys para poder conectar a nossa conta.

Pronto, só isso. Agora vamos programar!

Development

Crie um Java Project

O nosso exemplo será com o Java Application somente para vermos a conexão e listagem do que temos no Dropbox. O meu projeto é um maven project, portanto vamos precisar da API do Dropbox. Adicione o código abaixo no pom.xml.

<dependency>
  		<groupId>com.dropbox.core</groupId>
  		<artifactId>dropbox-core-sdk</artifactId>
  		<version>1.7.2</version>
  	</dependency>

Crie uma classe com método main do Java (chamei minha classe de Main). O código a seguir é o que está nessa página.

A ideia aqui é explicar como fazer tudo funcionar. Ter apenas o código e executar não é o suficiente. Veja o código:

public class Main {
	public static void main(String[] args) {
		final String APP_KEY = "KEY HERE";
		final String APP_SECRET = "KEY SECRET HERE";
		DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET);
//
		DbxRequestConfig config = new DbxRequestConfig("JavaTutorial/1.0",	Locale.getDefault().toString());
		DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);
		String authorizeUrl = webAuth.start();
		System.out.println("AuthorizeURL " + authorizeUrl);
		System.out.println("3. Copy the authorization code.");

		try {
			String code = new BufferedReader(new InputStreamReader(System.in)).readLine().trim();

		DbxAuthFinish authFinish = null;

			authFinish = webAuth.finish(code);
			DbxClient client = new DbxClient(config, authFinish.accessToken);
			System.out.println("Linked account: "
					+ client.getAccountInfo().displayName);
			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());
			}
		}catch (DbxException e) {
			e.printStackTrace();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Agora é que vem o pulo do gato: se você rodar essa app e não fizer nada, o que acontece? Bem, você poderia esperar que fossem listados todos os seus arquivos que estão na raiz da sua conta do Dropbox, certo? Por causa dessa linha aqui:

DbxEntry.WithChildren listing = client.getMetadataWithChildren("/");

Rode e veja o resultado a seguir:

dropboxrunningmain

O que você precisa fazer? Copiar a URL e colar no browser. O dropbox vai solicitar allow para app que está querendo acessar, então você dar autorização e ele gera um token:

dropboxtokenbrowser

Feito isso vá para a aplicação e vamos alterar apenas uma linha. Veja qual:

//String code = new BufferedReader(new InputStreamReader(System.in)).readLine().trim();
			String code = "TOKEN CREATED HERE";

Observe que comentei uma linha e coloquei o token que foi gerado na variavel code; poderia também ter digitado no console. Se tudo der certo, você vai ver tudo que tem na raiz do seu Dropbox:

dropboxworking

Simples, não? Você pode fazer o que quiser com os arquivos. Na documentação você pode ver como fazer o download.

Problema

Se você rodar a aplicação novamente, o code gerado acima é inválido e será preciso criar um novo. No próximo artigo vamos ver como resolver isso.

Abraços!