2013-02-02 7 views
5

Tôi đã tạo một ứng dụng trang đơn cục bộ (trang web có javascript nhúng được mở cục bộ bằng Trình duyệt Chrome) và tôi muốn có khả năng tải lên và tải xuống các tệp từ tài khoản Dropbox của mình. Tôi đã tìm kiếm một giải pháp để làm điều này bằng cách sử dụng javascript, tuy nhiên, tôi đã đi vào một kết thúc chết. Có một javascript Dropbox api (dropbox.js), nhưng có vẻ như bạn cần sử dụng nó từ một máy chủ web (cho chuyển hướng xác thực Dropbox) mà tôi không nghĩ rằng sẽ làm việc để chuyển hướng đến một tập tin html địa phương sau khi xác thực.Tải tệp lên Dropbox bằng javascript cho một ứng dụng Trang đơn?

Có ai đã làm những gì tôi đang cố gắng làm hay chỉ là không thể thực hiện được? Nếu không có Dropbox, có cách nào khác thay thế (ví dụ: Google Drive, v.v.) không?

Cảm ơn.

Trả lời

2

Bạn chắc chắn có thể làm việc với ổ đĩa Google: https://developers.google.com/drive/quickstart-js. Có một plunker mẫu nổi xung quanh quá. Tôi tin rằng bạn có thể làm việc với Skydrive thông qua JS api.

Không chắc chắn về dropbox nhưng họ sử dụng OAuth 1 (xác thực Dropbox tuân thủ đặc tả OAuth v1 @https://www.dropbox.com/developers/core/authentication#python) và thường không sử dụng nó với JS vì nó yêu cầu hiển thị ứng dụng của bạn bí mật. Twitter sử dụng tương tự, và họ đã giết chết JS api của họ.

0

Bạn có thể thử sử dụng một trong các máy chủ web cục bộ nhẹ như Bottle hoặc thậm chí Tornado. Và sau đó URL chuyển hướng sẽ là một loại http://127.0.0.1:5000/.

5

To authenticate sử dụng client.authDriver(new Dropbox.Drivers.Popup()) (see here) thay vì chuyển hướng:

Trình điều khiển này có thể hữu ích cho các ứng dụng trình duyệt mà không thể xử lý sự chuyển hướng peformed bởi Dropbox.Drivers.Redirect. Trình điều khiển này tránh thay đổi vị trí của cửa sổ trình duyệt của ứng dụng bằng cách bật lên một cửa sổ riêng biệt và tải ủy quyền Dropbox trang trong cửa sổ đó.

Bạn sẽ có thể read the file locally using a FileReader, sau đó write your file.


Cập nhật: Có, bạn có. Xem Browser and Open-Source Applications:

Nguyên tắc API Dropbox yêu cầu khóa API và bí mật không bao giờ là tiếp xúc trong văn bản rõ ràng. Đây là vấn đề đối với các ứng dụng sử dụng các tệp dropbox.js ở phía máy khách (các ứng dụng trình duyệt và tiện ích mở rộng của Chrome), như cũng như tất cả các ứng dụng nguồn mở.

Để đáp ứng yêu cầu này, encode your API key.

+0

Tôi vẫn cần hiển thị bí mật ứng dụng OAuth trong mã? (Và đó là xấu hay không sao trong trường hợp này?) – legoscia

+0

Đủ công bằng, nếu Dropbox tự nói như vậy. Nhưng điều này có an toàn hơn là đặt khóa API và bí mật không? Không phải là khóa được mã hóa chỉ là "tương đương văn bản"? – legoscia

+0

Vì bạn muốn thực hiện xác thực cục bộ, không có cách nào xung quanh nó. Nếu bạn đang lo lắng rằng ai đó có thể ăn cắp khóa của bạn, bạn sẽ cần phải hande xác thực trên máy chủ. Mặt khác, nếu họ nhận được chìa khóa của bạn, họ sẽ làm gì với nó? – laktak