2013-08-04 27 views
5

Piszę aplikację w Cordova/PhoneGap, która próbuje pobrać plik z Dropbox za pomocą Dropbox.js. Wersja Cordova to 3.0.1, a wersja Dropbox.js to 0.10.0. Moja Javascript działa dobrze w przeglądarce na komputerze z tym:Uwierzytelnianie Dropbox.js w Cordova/PhoneGap

var client = new Dropbox.Client({ key: "<my key>", secret: "<my secret>"}); 
client.authenticate(function(error, client) { 
... 

Ale w Cordova-zapakowanego aplikacji pojawia się błąd: „Wydaje się, że aplikacja uzywasz złożyła wniosek złe”.

Podejrzewam, że problem ma zrobić z przekierowania URL, który rozwiązuje to w aplikacji Cordova:

Dropbox.AuthDriver.BrowserBase.currentLocation() 
-> file:///android_asset/www/index.html 

Urls począwszy file: /// nie będzie działać poprawnie z Dropbox API nawet jeśli Dodaję je do identyfikatorów URI przekierowania OAuth w konsoli API Dropbox.

Aplikacja Cordova działa dobrze, jeśli wiem, uid i Token Przed:

var client = new Dropbox.Client({ 
    key: "<my key", 
    secret: "<my secret>", 
    token: "<token>", 
    uid: "<uid>" 
}); 
client.authenticate(function(error, client) { 
... 

W ten sposób można odczytać moje pliki Dropbox dobrze. Problem polega na tym, że token nie trwa wiecznie i chciałbym otrzymać nowy z samej aplikacji.

Zgodnie z this discussion ten problem powinien już zostać rozwiązany we wcześniejszej wersji pliku dropbox.js (0.9.2). Ale wciąż w to wpadam. Zastanawiam się, czy powinienem użyć API nieco inaczej, ale nie wiem jak.

Dropbox.js dodał opcję redirectUrl in this commit Po prostu nie wiem dokładnie, co mam umieścić w mojej aplikacji Cordova. Plik: ///android_asset/www/index.html nie będzie działał, ponieważ interfejs API Dropbox nie zezwala na przesyłanie adresów URL plików.

Odpowiedź Simona McDonalda na this question może pomóc. Ale to oznacza, że ​​muszę mieć zewnętrzną stronę hostowaną przez serwer z funkcją logowania dropbox.js. Czy mogę zamiast tego użyć głównej strony logowania w sieci Dropbox?

Odpowiedz

5

dropbox.js 0.10.1 ma kilka poprawek dla Cordova.

Właśnie ustawiliśmy stronę, której można używać jako przekierowania OAuth 2 we wbudowanych przeglądarkach internetowych, gdy plik: // nie działa.

https://www.dropbox.com/1/oauth2/redirect_receiver

+0

Świetnie! Przetestuję wersję główną i jeśli to nie zadziała, przynajmniej nie będę musiał hostować i tworzyć interaktywnej strony logowania https, ponieważ już ją utworzyłeś. – auramo

+0

Wersja główna wydaje się mieć ten sam problem: https://github.com/dropbox/dropbox-js/issues/106#issuecomment-22203159 – auramo

+0

Teraz jest nowa wersja, która działa dalej: https://github.com/ dropbox/dropbox-js/issues/106 # issuecomment-22726393 – auramo