Série Dropbox: Conectando com DropBox API Java

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 post é mostrar como conectar sua aplicação com o DropBox.

Lets go…

Starting…

No inicio 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 por serem bem diretas. No meu caso usei a opção full Access e permiti que a aplicação acesse 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 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: https://www.dropbox.com/developers/core/start/java

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("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " + 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 post vamos ver como resolver isso.

Abraços, see ya!!

2 comentários em “Série Dropbox: Conectando com DropBox API Java”

  1. Bom dia, para um aplicativo não usar a memória do celular de quem o baixa, será que consigo usar o Dropbox como servidor desse aplicativo e sincronizar com o Eclipse? Ou simplesmente hospedar as imagens no Dropbox? Como faço isso?
    Obrigado a todos!

    1. opa Marcio,
      Vc pode usar o dropbox para armazenar imagens sim.E carregar no app as imagens que vem do dropbox. Fazemos isso aqui para economizar espaço no aplicativo qdo mobile. O problema que off-line, as imagens vão quebrar por exemplo.

Deixe um comentário

O seu endereço de e-mail não será publicado.