9

モバイル開発者として、アプリケーションのユーザーが複数の .zip ファイルをダウンロードできるソリューションを探しています。これにより、アプリケーションに「モジュラー」感が追加されます。別のアプリで Dropbox API を使用して、ユーザーが自分のアカウントにアイテムをバックアップできるようにしましたが、今度はユーザーが自分のアカウントにアクセスする必要があります。

自分のアカウントに対して Dropbox セッションを自動的に認証する方法や、ユーザーが気付かないうちにパブリック フォルダに接続する方法はありますか?

フォローアップの質問

アクセス キーとアプリ キー/シークレットをアプリケーションにハードコーディングすると、セキュリティにどのような影響がありますか? .apk からソース コードを取得するのは非常に簡単であることはわかっていますが、その情報を使って何ができるでしょうか?

4

3 に答える 3

7

これは API の本来の目的ではありませんが、アプリのアクセス トークンを一度手動で承認し、そのアクセス トークンをプログラムで埋め込んで、アプリのすべてのインスタンスに再利用することができます。(ただし、そのアクセス トークンを誤って取り消さないように注意する必要があります。) ただし、この方法には、詳細によっては、セキュリティとレート制限の問題がある可能性があります。

または、リンクを使用する他の方法の方がおそらく簡単です。必要なリンクを作成し (必要に応じてダイレクトに変換し)、そこからダウンロードします。(また、もちろん Dropbox は CDN ではないため、帯域幅の制限に注意してください。)

フォローアップの回答

アプリ トークンとアクセス トークンをアプリに埋め込むと、攻撃者がそれらを抽出して、アプリがアクセスできる Dropbox のすべての部分 (アプリ フォルダーまたはまたは API アプリに応じて完全な Dropbox)、アプリ自体が通常強制しようとする制限に関係なく。このため、この方法を使用して個人情報 (ユーザー固有の個人ファイルなど) を保存することは望ましくありません。

于 2013-02-22T17:36:47.563 に答える
1

しばらく経ちましたが、Dropbox でパブリック アクセス トークンを生成し、コード内で使用できるようになりました

はい、ドロップボックス API への永続的なアクセスを許可する方法があります。アプリケーション設定 (ドロップボックス コンソール) からアクセス トークンを生成し、それを使用する必要があります。ドロップボックスの内容は次のとおりです。

アクセス トークンを生成することで、承認フローを経由せずに、自分のアカウントに対して API 呼び出しを行うことができます。他のユーザーのアクセス トークンを取得するには、標準の OAuth フローを使用します。

コードワードで:

AndroidAuthSession session = buildSession();
mApi = new DropboxAPI<AndroidAuthSession>(session);

    private AndroidAuthSession buildSession() {
        AppKeyPair appKeyPair = new AppKeyPair(APP_KEY, APP_SECRET);
        AndroidAuthSession session = new AndroidAuthSession(appKeyPair, ACCESS_TOKEN);
        // I guess then you just have to instantiate a DropboxAPI object and you're good to go without the startAuthentication()... endAuthentication() etc.
        return session;
    }

ここでは、mApi を使用して、必要なことを行います。

于 2016-05-27T13:40:58.497 に答える
0

アクセス キーとアプリ キー/シークレットをアプリケーションにハードコーディングすると、セキュリティにどのような影響がありますか?

十分な動機を持つ誰かが最終的にあなたのアクセス キーを取得します。

.apk からソース コードを取得するのは非常に簡単であることはわかっていますが、その情報を使って何ができるでしょうか?

彼らはあなたがその情報でできることは何でもすることができます.

于 2013-02-22T22:22:04.270 に答える