環境 |
Windows 10 + Visual Studio 2015 + C# |
目的: | 本篇介紹DropBox 空間,如何透過公開API服務,讀取雲端硬碟的資料 |
Github: | https://github.com/gotoa1234/DropboxExample |
本篇分為三部分: | |
一、 | 開啟DropBox API Developers 權限,並且取得Access Token |
二、 | 使用DropBox API 呼叫方法 |
三、 | 建置專案,實作取得資料的方法 |
四、 | 延伸應用 - 取得連結下載檔案 |
一、開啟DropBox API Developers 權限,並且取得Access Token
Step 1:連線到開發者頁面 https://www.dropbox.com/developers
Step 2:登入帳號(右上角Sign In)
Step 3:建立我們的開發者權限 : 左邊 My apps -> 右上Create app
Step 4:開啟存取權限範圍 (以下皆可依照需求變更調整)
1. Choose an API -> 這邊選擇個人用戶 (如圖黑框)
2. Choose the type of access you need -> Full Dropbox (如圖黑框,這裡表示全部資料夾、檔案皆可存取)
3. Name your App -> 命名 (有規範,且不可重複,故不可以用圖片中的名稱)
4. 選擇我同意 (I agree .......) ,然後Create app
Step 5:取得Access Toke
Step 6:取得Token如下圖:
二、使用DropBox API 呼叫方法
Step 1: 黑框 : API Explorer -> DropBox 提供API 叫用方法
黃框 : API 叫用文件,依照語言的不同有各自的Libary叫用方式
Step 2:以下是我的DropBox 雲端硬碟資料夾
根目錄 : 2個檔案 + 1個資料夾
Image資料夾 : 1個檔案
Step 3:Step 1中選擇 API Explorer -> 選擇list_folder (取得DropBox 資料夾資訊) -> 輸入自己的Access Token -> Submit Call (執行Post)
Step 4:以下是執行呼叫回傳結果,這章節介紹使用方法,下一章節進入實作擷取下載檔案的方法
由上至下:
1. folder 資料夾,路徑為 /image
2. file 檔案,路徑為/dropbox paper 新手指南.url
3.file 檔案,路徑為/dropbox paper 新手指年.pdf
三、建置專案,實作取得資料的方法
Step 1:建立一個Visual 專案,該範例用WinForm
Step 2:進行Nuget 安裝
Step 3:設定token
/// <summary>
/// 訪問所有資料的DropBox Token
/// </summary>
private string AccessToken = "4sY3_IJMOQAASDASDSADABDASDSg4FDhDgWCYu-qdsdF5uzEZcWupHcQmMvjNjnPdgJW";
Step 4:寫好讀取資料夾Method
/// <summary>
/// 取得DropBox API 資料夾的Method
/// </summary>
/// <returns></returns>
async Task ListRootFolder()
{
using (var dbx = new DropboxClient(this.AccessToken))
{
#region //位置 => 根目錄
//根目錄的folder(資料夾)
var list = await dbx.Files.ListFolderAsync(string.Empty, recursive: false);// Result;
foreach (var item in list.Entries.Where(i => i.IsFolder))
{
Console.WriteLine("D {0}/", item.Name);
}
//位置 => 根目錄
//根目錄的所有檔案
foreach (var item in list.Entries.Where(i => i.IsFile))
{
Console.WriteLine("F{0,8} {1}", item.AsFile.Size, item.Name);
}
#endregion
#region //位置 => 根目錄/image
// 根目錄/image 的所有檔案
var list2 = await dbx.Files.ListFolderAsync("/image/");
foreach (var item in list.Entries.Where(i => i.IsFile))
{
Console.WriteLine("F{0,8} {1}", item.AsFile.Size, item.Name);
}
#endregion
}
}
Step 5:從FormLoad 叫用 (偷懶XD)
private void Form1_Load(object sender, EventArgs e)
{
//呼叫DropBox api
var task = Task.Run((Func<Task>)ListRootFolder);
task.Wait();
}
Step 6:執行結果
我們已經可以透過程式碼叫用DropBox API 取得雲端硬碟的資料位置
四、延伸應用 - 取得下載檔案的連結
Step 1:這次要使用 get_temporary_link 進行下載檔案的功能 ※不可用Download 這會取得下載資訊,當初卡在這邊2~3小時,慢慢看文件才確定這邊的用法
Step 2:我們輸入 /image/docker.jpg 取得檔案連結,DropBox 有安全性限制,隔一段時間後下面的連結會失效,必須重新叫用API產生連結位置
https://dl.dropboxusercontent.com/apitl/1/AABY08h5aHOFbqCB14CN5R8FicM2952Hb9kq96ckibgKWjR_bkHWasKN7eYj2BS1zMVH7nzmgQb3cyEnLL3JzyZtLOcn-gmLCy4p347t5thUzWMIvFEhSe9lf-l2MqeG3m0KF15XYv-fsHcKdnGvWrvuOdZuRyQN8QkzD6zMaJOCSgOAn3zt8cdQghEcAKyOV82K8VGWEjkJTn-xx2VNwhZoRdkXUjxg378jtQh8IER-Avj_CH-xBDTbhu7XSQ_MwCWG5v80spzGJ03Jb5FMlM_L
※path 可以透過第三章節取得目錄、檔案位置進行組合。
Step 3:可以進行下載
Step 4:程式碼中我們增加mathod
/// <summary>
/// 呼叫DorpBox Image資料夾底下的圖片
/// </summary>
/// <returns></returns>
async Task Download(string path)
{
using (var dbx = new DropboxClient(this.AccessToken))
{
try
{
var result = await dbx.Files.GetTemporaryLinkAsync(path);
Console.Write(string.Format("download link : {0}", result.Link));
}
catch (Exception ex)
{
}
}
}
Step 5:從FormLoad 呼叫
//呼叫DropBox api 取得檔案下載連結
var taskLink = Task.Run(() => Download("/image/docker.jpg"));
taskLink.Wait();
Step 6:執行結果 ->取得檔案下載位置