基于Java的Dropbox文件操作

Dropbox提供了基于各种类型的API和应用类型的开发工具和接口,详细的可以参考 https://www.dropbox.com/developers/core 。这里我只介绍基于Java的文件操作实现,可以参考 https://www.dropbox.com/developers/core/start/java 。

 

一、创建应用

有点像Google的APP,需要先创建一个应用,创建应用的链接为 https://www.dropbox.com/developers/apps (前提是你已经有了Dropbox账号,并已经登陆了Dropbox),点击 Create App 后有两个选项:

  • Dropbox  API App
  • Drop-ins App

Drop-ins App 从它的介绍看来,我理解是基于Web和Mobile的应用的API,所以这里我选择 Dropbox API App,剩下的选项如下图:

基于Java的Dropbox文件操作_第1张图片

App的名字可能需要另取,以通过验证。

 

提交完以后就进入下一页了,对应于刚创建的App的详细信息:

基于Java的Dropbox文件操作_第2张图片

 这里面最重要的部分就是红色框里的App key 和App Secret,需要用他们来获取AccessToken,以允许最终的操作的执行,蓝色部分可以指定获取Authorize Code时的返回链接,也即获取Authorize Code所指定URL里的redirect_url参数。 不过对我们的Demo应用,这里的所有值都可以为空,不影响。

 

二、添加依赖

App创建完后,基本上就可以开始应用的开发了。不过还差一点点。我们先要去把Dropbxo相关的依赖加上。Dropbox提供了一个用于Java应用开发的工具包,链接为:https://www.dropbox.com/developers/core/sdks/java 。如果是普通的Java应用,可能就需要安装它提供的JDK安装包。如果是Maven应用,则简单的添加以下依赖即可:

<dependency>
  <groupId>com.dropbox.core</groupId>
  <artifactId>dropbox-core-sdk</artifactId>
  <version>[1.7,1.8)</version>
</dependency>

 我这里使用基于Maven依赖的方式。不过哪一种方式对于后面的开发都不影响。

 

三、获取Authorize Code

Dropbox应用是基于HTTP和OAuth认证方式进行访问的。因此在真正操作之前,我们首先需要获取一个有效的Access Token,然后在以后的访问和操作中都使用这个Access Token进行认证。

 

这个时候就需要用到上面的App Key和App Secret了。我们需要用它去申请一个Authorize code。其实就是一个用于生成Authorize Code的链接,这个链接打开以后有两个选项:取消 和 同意。如果App拥有者(App Owner,在咱们的例子,也就是我们自己)点击了同意,则会生成一个Authorize Code,App拥有都需要把这个Code发给访问应用的申请人。

 

每个应用对应的链接是固定的格式,最简单的就是Authorize URL:

https://www.dropbox.com/1/oauth2/authorize?client_id=APP_KEY&response_type=code

(替换APP_KEY为应用对应的App Key,看上图)

 

对于每个应用申请者来说,你都需要把三个值发给他:

  • App Key
  • App Secret
  • 点击Authorize URL里的 同意 后生成的一个Authorize Code.

如果用代码的方式获取Authorize URL,则代码如下:

		String APP_KEY = "APP_KEY";
		String APP_SECRET = "APP_SECRET";

		DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET);

		DbxRequestConfig config = new DbxRequestConfig("dropbox/1.0", Locale
				.getDefault().toString());
		DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);

		// Have the user sign in and authorize your app.
		String authorizeUrl = webAuth.start();

 

三、获取Access Token

有了App Key,App Secret和Authorize Code,以后,可以用以下代码(其实这个代码最终构建的就是一个HTTP的请求,所以也可以直接发HTTP的请求)去获取Access Token:

		String APP_KEY = "APP_KEY";
		String APP_SECRET = "APP_SECRET";
		String AUTHORIZE_CODE = "AUTHORIZE_CODE";

		DbxAppInfo appInfo = new DbxAppInfo(APP_KEY, APP_SECRET);

		DbxRequestConfig config = new DbxRequestConfig("dropbox/1.0", Locale
				.getDefault().toString());
		DbxWebAuthNoRedirect webAuth = new DbxWebAuthNoRedirect(config, appInfo);

		DbxAuthFinish authFinish = webAuth.finish(AUTHORIZE_CODE);

		String accessToken = authFinish.accessToken;

 

这个Access Token可以存起来,以重复利用,可以使用以下代码将它存到一个文件里(也可以是其他地方):

		DbxAuthInfo authInfo = new DbxAuthInfo(accessToken, appInfo.host);
		DbxAuthInfo.Writer.writeToFile(authInfo, new File("access.auth"));

  

读取的时候,可以用类似的方式:

			DbxAuthInfo readFromFile = DbxAuthInfo.Reader.readFromFile(new File("access.auth"));
			String accessToken = readFromFile.accessToken;

 

四、操作Dropbox

有了Access Token后就可以开始操作Dropbox了。可以使用 DbxClient 对象来操作:
DbxClient client = new DbxClient(config, accessToken);

# 遍历文件

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

# 读取文件

		FileOutputStream os = new FileOutputStream("output.txt");
		try {
			DbxEntry.File downloadedFile = client.getFile("magnum-opus.txt",
					null, os);
		} finally {
			os.close();
		}
 

# 上传文件

		FileInputStream inputStream = new FileInputStream(new File("output.txt"));
		try {
			DbxEntry.File uploadedFile = client.uploadFile("/magnum-opus.txt",
					DbxWriteMode.add(), inputFile.length(), inputStream);
		} finally {
			inputStream.close();
		}
 

 

 

你可能感兴趣的:(Dropbox)