5

Dropbox.js を使用して Dropbox からファイルを取得しようとする Cordova/PhoneGap でアプリを作成しています。Cordova のバージョンは 3.0.1、Dropbox.js のバージョンは 0.10.0 です。私の Javascript は、これを使用してデスクトップ ブラウザーで問題なく動作します。

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

しかし、Cordova でパッケージ化されたアプリでは、「使用していたアプリが不正な要求を送信したようです」というエラーが表示されます。

この問題は、Cordova アプリでこれに解決されるリダイレクト URL に関係していると思われます。

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

file:/// で始まる URL は、Dropbox API コンソールで OAuth リダイレクト URI に追加しても、Dropbox API では正しく機能しません。

以前に uid とトークンを知っていれば、Cordova アプリは正常に動作します。

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

このようにして、ドロップボックスファイルを問題なく読み取ることができます。問題は、トークンが永久に保持されないことです。アプリ自体から新しいトークンを取得したいと考えています。

このディスカッションによると、この問題は以前のバージョンの dropbox.js (0.9.2) で既に解決されているはずです。しかし、私はまだそれに遭遇します。API を少し別の方法で使用する必要があるのだろうかと思いますが、方法がわかりません。

Dropbox.js は、このコミットに redirectUrl オプションを追加しました。Cordova アプリに何を配置すればよいか正確にはわかりません。Dropbox API ではファイル URL が許可されていないため、file:///android_asset/www/index.html は機能しません。

この質問に対する Simon McDonald の回答が役立つかもしれません。しかし、それは、dropbox.js ログイン機能を備えた外部サーバーでホストされるページが必要であることを意味します。または、メインのドロップボックス Web ログイン ページを代わりに使用できますか?

4

1 に答える 1

5

dropbox.js 0.10.1 には、Cordova に関するいくつかの修正が含まれています。

file:// が機能しない場合に、埋め込み WebView で OAuth 2 リダイレクト URL として使用できるページをセットアップしました。

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

于 2013-08-05T08:08:44.810 に答える