2012-07-15 60 views
6

問:DropNet DropBox登錄,如何以編程方式在控制檯應用程序中執行此操作?

我使用DropBox的csharp的API從這裏:
https://github.com/dkarzon/DropNet

從單元測試,並從這裏 https://github.com/dkarzon/DropNet/blob/master/DropNet.Samples/DropNet.Samples.Web/Default.aspx.cs

我計算過,它的工作原理是唯一的工作樣本這個:

DropNet.DropNetClient client = new DropNet.DropNetClient(strApiKey, strAppSecret); 

DropNet.Models.UserLogin login = client.GetToken(); 
client.UserLogin = login; 

var accountInfo = client.AccountInfo(); 
str = accountInfo.quota_info.quota.ToString(); 

probem是,它在accountinfo上引發異常。 (System.Net.HttpStatusCode.Unauthorized) 以前的一切正常,我得到登錄(usertoken & usersecret)。

我想我的問題是示例應用程序的這一部分:

var url = _client.BuildAuthorizeUrl(Request.Url.ToString() + "?dropboxcallback=1"); 
Response.Redirect(url); 

凡重定向到dropbox來登錄... 我沒有一個Web應用程序,所以我沒有URL。 ..

我擁有的是一個控制檯應用程序,它應該每晚自動將我的數據庫備份爲一項服務,對此它肯定非常糟糕,需要Web瀏覽器和用戶輸入電子郵件/用戶名+密碼。

如何通過直接提供硬編碼的用戶名和密碼進行登錄?

如果我使用的示例應用程序,那麼它的工作原理,但是這需要在網絡上的用戶名和密碼打字,而且吸大的時間爲一個控制檯應用程序...

+0

你綁到主機的控制檯應用程序UI控件? – Paparazzi 2012-07-15 19:40:51

+1

不,我試圖將文件複製到DropBox,首先檢查可用空間(控制檯應用程序)。我絕對不想要UI控件,也不需要UI。 – 2012-07-15 19:41:57

回答

1

這是可能的,使用SharpBox - 測試,工作。
需要手動獲取AccessToken作爲一次性操作,然後可以省略登錄頁面並使用保存的AccessToken。

http://www.jayway.com/2012/02/06/unboxing-dropbox-and-sharpbox-2/

的魔線是:

Globals.DropBox.Token = AppLimit.CloudComputing.SharpBox.StorageProvider.DropBox.DropBoxStorageProviderTools 
.ExchangeDropBoxRequestTokenIntoAccessToken(
     Globals.DropBox.config 
    , Globals.DropBox.AppKey, Globals.DropBox.AppSec 
    , Globals.DropBox.requestToken 
); 
6

據我知道從其他API(Facebook,谷歌,堆棧交換等),你將不得不將你的用戶重定向到Dropbox的網頁,在那裏它將授予你使用它的帳戶執行任務的權限。

所以一般這是不可能實現這個沒有webbrower。否則,你將不得不執行真正骯髒的黑客攻破dropbox的權限系統。

請在谷歌上查看「OAuth 2.0授權流程」。 這裏有一個圖,我發現在Yahoo這表明它是如何工作的:

The OAuth 2.0 flow

+0

如果這是真的,那麼API是如此無用... – 2012-07-15 22:35:06

+0

正如我已經提到的,你可以嘗試自己解析生成的HTML並提取文本框名稱來模擬用戶輸入了它的憑據並將它們傳遞給API。請注意,你可能不得不繞過一些東西,如用於反[XSRF](http://de.wikipedia.org/wiki/Cross-Site_Request_Forgery)的登錄ID;) – GameScripting 2012-07-16 08:00:30

+0

我soooo擰...嘗試UbuntuOne - 它是API(如果它可以被稱爲)更糟。現在Google驅動器是我最後的希望。它也使用oAuth,所以 - 可能我仍然是如此。也許是時候寫我自己的雲存儲提供商,我感覺到一個市場缺口 - 有許多雲存儲提供商,但沒有一個有用的API ... – 2012-07-16 11:25:00

1

由於GameScripting解釋Dropbox的API使用OAuth這就需要用戶登錄通過Dropbox的網站進行身份驗證的訪問令牌。

結帳在這裏的文檔:http://dkdevelopment.net/what-im-doing/dropnet/爲3個步驟的過程。

你在建什麼樣的應用程序?正常的過程是在應用程序內部加載瀏覽器控件,並使用它導航到登錄URL。

也有看樣品的Windows Phone應用程序,讓您的這個過程是如何工作的想法:https://github.com/dkarzon/DropNet/blob/master/DropNet.Samples/DropNet.Samples.WP7/MainPage.xaml.cs

+0

- >你在建什麼樣的應用程序? - >控制檯應用程序,我說在這個問題中,在你寫之前閱讀它,請......在控制檯應用程序中看過一個WebBrowser(Lynx不計數,我不想爲C#編寫控制檯瀏覽器) )。 – 2012-07-17 11:40:28

+0

控制檯應用程序是否僅在內部使用一個Dropbox帳戶?如果是這樣的話,我可能會建議你使用一個簡單的頁面像示例一樣手動獲取令牌,然後將令牌「硬編碼」到應用程序中,而不是用戶名和密碼。 – dkarzon 2012-07-19 03:01:05

+0

是的,信息的缺失在於您需要將RequestToken交換爲訪問令牌。畢竟有意義 - 公鑰/私鑰加密密碼,所以沒有人可以對其進行反向工程。 – 2013-08-29 10:24:00

1

硬編碼的用戶名和密碼,而不是,你可以硬編碼OAuth訪問令牌。

首先,創建一個簡單的程序(使用相同的應用程序密鑰),遵循標準的基於瀏覽器的授權流程。然後用它來授權所需用戶的應用程序。這將爲您提供與該用戶和您的應用程序密鑰關聯的OAuth訪問令牌(「令牌」和「令牌密鑰」)。然後,在您的服務式應用程序中,只需硬編碼OAuth訪問令牌(使用DropNetClient的4參數構造函數)即可。

2

對於uisng的DropnetClient的4參數的構造函數也是我們需要建立基於Web網址,並允許用戶進行身份驗證他的賬戶,這是compusory的事情,的accessToken將產生之後,用戶打允許在認證過程按鈕

相關問題