CordovaモバイルアプリとDropbox API v2

Has anyone gotten the Dropbox API v2 working in a Cordova mobile application? Or even a mobile application period? There is a tutorial for the API v1 & Cordova: http://ourcodeworld.com/articles/read/149/how-to-use-dropbox-in-a-cordova-application But Dropbox has or is deprecating it.

基本的なCordovaプロジェクト(バージョン6.5.0)であり、Dropbox API v2が含まれているGithubプロジェクトがあります。プロジェクトを承認画面に移動させることはできますが、私の問題はリダイレクトURIだと思います。

私が使っている:

But again, I have already put everything into a Github repo: https://github.com/ModusPwnens1337/dropboxTest

私はリダイレクトURIが問題だと思います、あなたはそれをindex.htmlの128行目で見つけることができます:

var authUrl = dbx.getAuthenticationUrl('https://www.dropbox.com/oauth2/authorize?response_type=token&client_id=8nvbrxvlg96tx1k&redirect_uri=helloworld://localhost/callback');

誰かがモバイルアプリにリダイレクトする権限を取得した、または取得できるかどうかをお知らせください。

前もって感謝します!

2
Dropbox API V2を使うプラグインはありますか? APPにDropbox API V2の機能をどのように実装しましたか?
追加された 著者 Nikhil,
私はまだ移行作業をしていて、いくらか助けが必要です。以前はDropboxの機能にross martinプラグインを使っていました。 API V2用のプラグインは他にないので、Dropbox sdkを使用してドロップボックス機能を実装しようとしています。 github.com/dropbox/dropbox-sdk-js 私はリダイレクトuriを提供するためにcustomurlschemeプラグインを使用しようとしました、しかしプラグインを追加した後それは私のプロジェクトから多くのファイルを削除します。だから私は現在javascript sdkからのauthenticateWithCordova()メソッドを使っています( dropbox.github.io/ dropbox-sdk-js )。
追加された 著者 Nikhil,
私はまだ移行作業をしていて、いくらか助けが必要です。以前はDropboxの機能にross martinプラグインを使っていました。 API V2用のプラグインは他にないので、Dropbox sdkを使用してドロップボックス機能を実装しようとしています。 github.com/dropbox/dropbox-sdk-js 私はリダイレクトuriを提供するためにcustomurlschemeプラグインを使用しようとしました、しかしプラグインを追加した後それは私のプロジェクトから多くのファイルを削除します。だから私は現在javascript sdkからのauthenticateWithCordova()メソッドを使っています( dropbox.github.io/ dropbox-sdk-js )。
追加された 著者 Nikhil,
この方法では、リダイレクトURIとして dropbox.com/1/oauth2/redirect_receiver を使用します。ユーザーが初めて認証ボタンをクリックしたとき(アクセストークンを返すとき)に機能します。問題:1.)同じユーザーが再度認証を試みると黒い画面が表示され、ユーザーがアプリにリダイレクトされます。 2.)ファイルをアップロードするためにどの方法を使いますか?パラメータとしてファイルの内容を必要とするfilesUpload()メソッドを使用してみました。では、どのようにしてJavascriptまたはCordovaでファイルの内容を提供するのでしょうか。
追加された 著者 Nikhil,
この方法では、リダイレクトURIとして dropbox.com/1/oauth2/redirect_receiver を使用します。ユーザーが初めて認証ボタンをクリックしたとき(アクセストークンを返すとき)に機能します。問題:1.)同じユーザーが再度認証を試みると黒い画面が表示され、ユーザーがアプリにリダイレクトされます。 2.)ファイルをアップロードするためにどの方法を使いますか?パラメータとしてファイルの内容を必要とするfilesUpload()メソッドを使用してみました。では、どのようにしてJavascriptまたはCordovaでファイルの内容を提供するのでしょうか。
追加された 著者 Nikhil,
またはあなたがこれを実行する方法を教えてください。
追加された 著者 Nikhil,
またはあなたがこれを実行する方法を教えてください。
追加された 著者 Nikhil,
@Nikhilあなたはそれを理解しましたか、あなたは助けが必要ですか?
追加された 著者 ModusPwnens,
@Nikhilあなたはそれを理解しましたか、あなたは助けが必要ですか?
追加された 著者 ModusPwnens,

4 答え

わかったので、私はこれを考え出しました! このプロジェクトには3つの問題がありました。

  1. My redirect URI was wrong, it should have just been the following:

    var authUrl = dbx.getAuthenticationUrl('helloworld://localhost/callback');

  2. I didn't set the custom URL scheme properly, luckily there is a nifty little plugin to use: https://github.com/EddyVerbruggen/Custom-URL-scheme. This is what I ran in my CLI to install the plugin: cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=helloworld

  3. After adding the plugin and reading the instructions you'll see that you need to add a function to handle the call back access token like so:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

function handleOpenURL(url) {
    console.log("handleOpenURL: " + url);
    showPageSection('authed-section');
   //Create an instance of Dropbox with the access token and use it to
   //fetch and render the files in the users root directory.
    var dbx = new Dropbox({ accessToken: getAccessTokenFromUrl2(url) });
    dbx.filesListFolder({path: ''})
        .then(function(response) {
            renderItems(response.entries);
        })
        .catch(function(error) {
            console.error(error);
        });
}
</div> </div>

また、新しいコールバックで機能するようにgetAccessTokenFromCustomUrlを編集する必要があります。

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

function getAccessTokenFromUrl2(url) {
    url = url.split('#')[1];
    console.log('getAccessTokenFromUrl2: ' + utils.parseQueryString(url).access_token);
    return utils.parseQueryString(url).access_token;
}
</div> </div>

Note, don't forget that the redirect uri needs to be pre-registered on the app's page on the App Console: https://www.dropbox.com/developers/apps

3
追加された

わかったので、私はこれを考え出しました! このプロジェクトには3つの問題がありました。

  1. My redirect URI was wrong, it should have just been the following:

    var authUrl = dbx.getAuthenticationUrl('helloworld://localhost/callback');

  2. I didn't set the custom URL scheme properly, luckily there is a nifty little plugin to use: https://github.com/EddyVerbruggen/Custom-URL-scheme. This is what I ran in my CLI to install the plugin: cordova plugin add cordova-plugin-customurlscheme --variable URL_SCHEME=helloworld

  3. After adding the plugin and reading the instructions you'll see that you need to add a function to handle the call back access token like so:

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

function handleOpenURL(url) {
    console.log("handleOpenURL: " + url);
    showPageSection('authed-section');
   //Create an instance of Dropbox with the access token and use it to
   //fetch and render the files in the users root directory.
    var dbx = new Dropbox({ accessToken: getAccessTokenFromUrl2(url) });
    dbx.filesListFolder({path: ''})
        .then(function(response) {
            renderItems(response.entries);
        })
        .catch(function(error) {
            console.error(error);
        });
}
</div> </div>

また、新しいコールバックで機能するようにgetAccessTokenFromCustomUrlを編集する必要があります。

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

function getAccessTokenFromUrl2(url) {
    url = url.split('#')[1];
    console.log('getAccessTokenFromUrl2: ' + utils.parseQueryString(url).access_token);
    return utils.parseQueryString(url).access_token;
}
</div> </div>

Note, don't forget that the redirect uri needs to be pre-registered on the app's page on the App Console: https://www.dropbox.com/developers/apps

3
追加された

You could try using this Cordova plugin for Oauth2 (which also uses the In-App-Browser plugin): https://github.com/krisrak/jquery-cordova-oauth2

1
追加された

You could try using this Cordova plugin for Oauth2 (which also uses the In-App-Browser plugin): https://github.com/krisrak/jquery-cordova-oauth2

1
追加された