2012-07-15 31 views
6

Câu hỏi:Đăng nhập DropNet DropBox, cách thực hiện chương trình trong ứng dụng bảng điều khiển?

Tôi đang sử dụng một CSharp API DropBox từ đây:
https://github.com/dkarzon/DropNet

Từ Unit tests, và các mẫu làm việc chỉ từ đây https://github.com/dkarzon/DropNet/blob/master/DropNet.Samples/DropNet.Samples.Web/Default.aspx.cs

I figured rằng nó hoạt động như này:

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(); 

Xác suất là, nó ném ngoại lệ vào tài khoản. (System.Net.HttpStatusCode.Unauthorized) Mọi thứ trước khi hoạt động tốt, tôi nhận được thông tin đăng nhập (usertoken & usersecret).

Tôi nghĩ rằng vấn đề của tôi là một phần của ứng dụng mẫu:

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

đâu nó chuyển hướng đến Dropbox cho một tên đăng nhập ... Tôi không có một ứng dụng web, vì vậy tôi không có URL. ..

Những gì tôi có là ứng dụng bảng điều khiển, nên sao lưu cơ sở dữ liệu của tôi mỗi tối tự động như một dịch vụ, mà chắc chắn là rất xấu yêu cầu người gửi web và người dùng phải nhập email/tên người dùng + mật khẩu.

Tôi làm cách nào để đăng nhập bằng cách cung cấp trực tiếp tên người dùng và mật khẩu đã mã hóa?

Nếu tôi sử dụng các ứng dụng mẫu, sau đó nó hoạt động, nhưng điều đó đòi hỏi phải gõ vào tên người dùng và mật khẩu trên trang web, và rằng hút thời gian lớn cho một ứng dụng giao diện điều khiển ...

+0

Bạn đang buộc để lưu trữ một điều khiển giao diện người dùng trong một ứng dụng giao diện điều khiển? – Paparazzi

+1

Không, tôi đang cố gắng sao chép tệp vào DropBox, kiểm tra không gian có sẵn trước tiên (giao diện điều khiển ứng dụng). Tôi chắc chắn không muốn điều khiển giao diện người dùng cũng như giao diện người dùng. –

Trả lời

1

Đó là có thể, bằng cách sử dụng SharpBox - được thử nghiệm, hoạt động.
Một trong những nhu cầu để có được AccessToken như một hành động một lần bằng tay, sau đó sau đó, người ta có thể bỏ qua trang đăng nhập và sử dụng AccessToken đã lưu.

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

Dòng diệu là:

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

Theo như tôi biết từ API khác (facebook, google, stack exchange, vv), bạn sẽ phải chuyển hướng người dùng của bạn đến một trang web của Dropbox, nơi nó sẽ cấp quyền cho bạn sử dụng tài khoản của nó để thực hiện mọi thứ.

Vì vậy, nói chung , bạn không thể đạt được điều này nếu không có một webbrower. Nếu không, bạn sẽ phải thực hiện hack thực sự bẩn để hack arround hệ thống cho phép của dropbox.

Vui lòng xem "Luồng ủy quyền OAuth 2.0" trên google. Dưới đây là một sơ đồ tôi tìm thấy ở Yahoo mà hiển thị của cách hoạt động:

The OAuth 2.0 flow

+0

Nếu điều này đúng ... thì API là vô ích ... –

+0

Như tôi đã đề cập, bạn có thể thử phân tích cú pháp HTML kết quả và trích xuất tên hộp văn bản để mô phỏng người dùng đã nhập thông tin đăng nhập và chuyển chúng vào API. Lưu ý rằng bạn có thể phải hack một số thứ như id đăng nhập được sử dụng để chống [XSRF] (http://de.wikipedia.org/wiki/Cross-Site_Request_Forgery);) – GameScripting

+0

Tôi đã sửa lỗi ... Đã thử UbuntuOne - đó là API (nếu nó có thể được gọi là) thậm chí còn tồi tệ hơn. Bây giờ ổ đĩa của Google là hy vọng cuối cùng của tôi. Nó sử dụng oAuth là tốt, vì vậy - có lẽ tôi vẫn còn soooo crewed. Có lẽ đã đến lúc viết nhà cung cấp lưu trữ đám mây của riêng tôi, tôi cảm nhận được khoảng cách thị trường - có nhiều nhà cung cấp dịch vụ lưu trữ đám mây, nhưng không có API hữu ích nào ... –

1

Như GameScripting giải thích API Dropbox sử dụng oauth đòi hỏi người dùng đăng nhập thông qua trang web dropbox để xác thực các thẻ truy cập.

Thanh toán tài liệu tại đây: http://dkdevelopment.net/what-im-doing/dropnet/ cho quy trình 3 bước.

Bạn đang xây dựng loại ứng dụng nào? Quá trình bình thường là tải một điều khiển trình duyệt bên trong ứng dụng và điều hướng đến URL đăng nhập với nó.

Cũng có một cái nhìn tại các mẫu ứng dụng Windows Phone để cung cấp cho bạn một ý tưởng về cách quá trình này hoạt động: https://github.com/dkarzon/DropNet/blob/master/DropNet.Samples/DropNet.Samples.WP7/MainPage.xaml.cs

+0

-> Bạn đang xây dựng loại ứng dụng nào? -> giao diện điều khiển ứng dụng, tôi nói rằng trong câu hỏi, đọc nó trước khi bạn viết, xin vui lòng ... Bao giờ nhìn thấy một WebBrowser trong một ứng dụng giao diện điều khiển (Lynx không đếm, tôi không muốn viết một giao diện điều khiển trình duyệt cho C#). –

+0

Ứng dụng Console chỉ có được sử dụng nội bộ với một tài khoản dropbox không?Nếu vậy tôi có thể đề nghị bạn nên tự nhận được các thẻ bằng cách sử dụng một trang đơn giản như ví dụ sau đó "hardcode" các thẻ vào ứng dụng thay vì tên người dùng và mật khẩu. – dkarzon

+0

Có, thiếu thông tin là bạn cần trao đổi RequestToken thành mã thông báo truy cập. Làm cho tinh thần sau khi tất cả - khóa công khai/tư nhân mã hóa mật khẩu, vì vậy không ai có thể đảo ngược kỹ sư đó. –

1

Thay vì hardcoding tên người dùng và mật khẩu, bạn có thể hardcode thẻ truy cập OAuth.

Trước tiên, tạo một chương trình đơn giản (sử dụng cùng một khóa ứng dụng) tuân theo luồng ủy quyền dựa trên trình duyệt chuẩn. Sau đó, sử dụng nó để cho phép ứng dụng với người dùng mong muốn. Điều này sẽ cung cấp cho bạn mã thông báo truy cập OAuth ("mã thông báo" và "bí mật mã thông báo") được liên kết với người dùng đó và khóa ứng dụng của bạn.

Sau đó, trong ứng dụng kiểu dịch vụ của bạn, chỉ cần mã hóa mã thông báo truy cập OAuth (sử dụng hàm tạo 4 đối số) của DropNetClient).

2

Đối uisng constructor 4 lập luận của DropnetClient cũng chúng ta cần phải xây dựng trang web dựa trên url và cho phép người dùng để xác thực tài khoản của mình này được điều compusory, accesstoken sẽ tạo ra sau khi người dùng nhấn nút cho phép trong quá trình xác thực

Các vấn đề liên quan