ラベル Dropbox の投稿を表示しています。 すべての投稿を表示
ラベル Dropbox の投稿を表示しています。 すべての投稿を表示

2010/08/28

AndroidでDropbox API (4) 公開申請

登録時にもらえるデベロッパーキーは開発用の物なので,そのキーを作ったアカウントにしかアクセスできず,アクセスできる回数にも制限があります.アプリケーションを一般公開するには,Dropbox側に申請して全てのアカウントにアクセスできるキーを貰う必要があります.

申請の仕方

  1. Dropbox for developersのMy Appsから,公開したいアプリの[Options]を押します.

  2. App statusがDevelopmentになっているので,その右の[Apply for production status]を押します.

  3. Dropboxを何に使うか,アプリの対象プラットフォーム,会社名やWebサイトの入力が求められます.学生なので会社名は開発用のアカウント名cyandroidに,ウェブサイトはこのブログのアドレス,電話番号は自宅にしました.

  4. App StatusがIn reviewに変わるので連絡を待つ


アプリ自体の提出は求められませんでした.開発ガイドラインに沿っているかどうか,という評価基準がありましたが,これから連絡があるのですかね?どちらにせよ今日は土曜日なので週明けまで待つことになりそうです.とりあえず許可がでることを祈るばかり.

ちなみにDropboxの評価プロセスに関してという,ページにはこんな事も書いてあります.
Also, given the security concern associated with allowing you to access user files we need some proof that you’re going to behave well. This could be a history of mobile app development, an email address showing you’re part of a reputable company, or a phone call where you come across as an especially competent and trusting person.

なんか個人開発者には絶望的なような...

追記(8/29)
結局アプリの提出は求められず,一日で許可がでました.
アプリ公開後にリンク先を送ってね,とのこと.

アクセスキーからログが取れますし,問題があれば停止する,という事なんでしょうかね.とりあえず申請すれば誰でも使えると考えて良さそうです.その後の流れは

  1. アプリを公開

  2. 公開したということと,アプリへのリンクをDropboxに通達

  3. 使用許可が剥奪されないことを祈る


です.

2010/08/25

AndroidでDropbox API (3) ファイルの取得,保存

デベロッパーフォーラムにファイル取得のサンプルと,ファイルリストの取得に使うmetadata関数の解説が落ちてました.
DROPBOX FORUMS » DEVELOPERS : IllegalStateException: Content has been consumed
Android: arguments to api.metafdata

その他,アップロードも含めてある程度使い方のわかった関数を載せときます.
全てDropboxAPIクラスの関数です.

ファイルの取得(ダウンロード)
getFileStream(String arg0, String arg1, String arg2)
arg0は"dropbox"で固定
arg1はDropboxのルートフォルダから見たファイルのパス.ルート直下の"test.txt"というファイルなら"/test.txt"という具合です.
arg2は不明ですが,nullで動きます.

この返り値であるFileDownloadクラスのメンバー変数isがInputStreamクラスなので,通常のファイル読み込みの形で内容を読み込めます.上のリンク先に詳しいコードが載っています.

ファイルの保存(アップロード)
putFile(String arg0, String arg1, File file)
arg0は"dropbox"で固定
arg1はDropboxのルートから見たフォルダのパス("/android"等).フォルダはなければ作ってくれます.ルート直下の場合からの文字列""です.
fileは保存したいファイル.このファイルのファイル名で保存されます.

アップロードするファイルはローカルに存在する必要があります.
また,フォルダ名とファイル名を含めた最終的なファイルが既に存在する場合,既存のファイルを上書きします.

ファイルの削除
delete(String arg0, String arg1)
arg0は"dropbox"で固定
arg1は消したいファイルのパスです.フォルダも消せます.フォルダ内にファイルがあっても,問答無用でフォルダごと消します.

フォルダの作成
createFolder(String arg0, String arg1)
arg0は"dropbox"で固定
arg1は作りたいフォルダの名前です.

ファイルリストの取得
metadata(String arg0, String arg1, int limit, String arg3, boolean list)
arg0は"dropbox"で固定
arg1はファイルリストを取得したいフォルダの名前です.ルートであれば""です.
limitは,リストに返す最大ファイル数です.適当に大きな数を入れておけば問題ありません.
arg3はhashらしいのですが,よくわかりません.とりあえずnullで動きます.
listはフォルダ内に含まれるファイルの内容を返すかです.ファイルリストを取得する場合はtrueです.

この関数はDropboxAPI.Entryクラスを返します.返されたEntryクラス内のcontentsというメンバー変数がDropboxAPI.EntryクラスのArrayListになっており,この中にarg1で指定したフォルダの下にあるフォルダとファイルの情報が入ります.
ルート直下のフォルダ・ファイル情報を得る場合は下のようなコードになります.

DropboxAPI.Entry entry = api.metadata("dropbox", "", 100, null, false);
int n = entry.contents.size();
for(int i = 0; i < n; i++){
Log.i("path",entry.contents.get(i).path);
}

これでだいたい基本的な事はできそうです.

AndroidでDropbox API (2) サンプルコードの読み解き

とりあえずドキュメントは基本的に無視して,サンプルコードの読み解きです.
サンプルにはDropboxSampleクラスとLoginAsyncTaskクラスがあるのでそれぞれの重要な関数について.

DropboxSample
Activityクラスを継承.UIの設定や,ログインのためのキー情報の保存と読み込み.

onCreate
UIの初期化.
一度ログイン済みで,Preferenceにログインのためのキーが保存されていたら,自動的にログイン処理を行ないます.キーがない場合,メールアドレスとパスワードが入力されてログインボタンがおされるのを待ちます.

setLoggedIn
ログイン状態に応じて,UIの状態を変更.ログイン済みの場合,テキストボックスへの入力を無効にし,ボタンをログアウトボタンにします.

getAccountInfo
LoginAsyncTaskクラスを作成し,ログインを行う関数です.キーを持っている場合はキーを使ってログインし,ない場合はメールアドレスとパスワードを使ってログインします.

displayAccountInfo
アカウントの情報を表示します.LoginAsyncTaskクラスがログイン処理を終えたときに呼ばれます.

authentificate
保存されているキーを使って,DropboxAPIクラスのauthenticateTokenで認証を行ないます.

getConfig
DropboxAPI.Configクラスを初期化します.

getKeys, sroeKeys, clearKeys
キーの取得,保存,削除をそれぞれ行ないます.

LoginAyncTask
AsyncTaskクラスを継承.は,それぞれdoInBackgroundの引数,publishProgress及びonProgressUpdateの引数,onPostExecuteの引数=doInBackgroundの返り値です.publishProgressとonProgressUpdateは進捗状態等を表示するのに使われますが,このクラスでは使われていません.

doInBackground
ログイン処理を行う関数です.認証済みでない場合,ユーザ名(メールアドレス)とパスワードを使ってDropboxAPIのauthenticate関数で認証を試みます.その後,アカウント情報を取得し,成功か失敗か等の情報を返します.

onPostExecute
doInBackground後に,その返り値を引数に呼ばれる関数です.成功していれば,DropboxSampleクラスのUIにアカウント情報を表示します.失敗すれば,失敗の原因を表示します.

キーについて
何回かキーという言葉を使用していますが,ユーザ名とパスワードを使って認証すると,そのユーザとしてログインするためのキーが得られます.このキーを保存して使うことで,ユーザ名とパスワードを保存する必要なく,再入力する必要もなくなるので,セキュリティ上好ましいらしいです.

ログインに必要な関数はLoginAsyncTaskにまとまっているので,自分のアプリに組み込むときもこれを使いまわせば良さそうです.呼び出す側のDropboxSampleで特に重要なのはauthenticate(),getConfig(),それにキーの保存関係くらいですかね.

さて,次はファイルの取得と保存です.

2010/08/24

AndroidでDropbox API (1) 登録からサンプル実行まで

以前から気になっていたDropbox APIに手を出してみました.
とりあえず登録からサンプルを動かすまでです.

  1. Dropbox for Developersにアクセスしてログイン.

  2. 左側のメニューから[My Apps]を選び,ライセンスに同意して[submit].

  3. [Create an App]を押す.アプリケーション名と内容を求められるので,適当に入力して[Create].アプリケーション名と内容は[Options]から変えられます.

  4. 左側のメニューから[Mobile Documentation]を選び,[Download the Java/Android SDK]を選んでAndroid Developers向けのSDK(中身はSDKというよりライブラリとそれを使ったサンプル)をダウンロード.

  5. ダウンロードしたフォルダを解凍.全てのファイルが読み取り専用になっているので,解凍されたフォルダを右クリック,読み取り専用属性をオフにする.これをしないとプロジェクトの作成が上手くいきません.

  6. Eclipse->File->New->Project->Android ProjectでCreate project from existing sourceを選ぶ.Importでは無い事に注意.

  7. ライブラリにパスが通っていないのでエラーが出ます.プロジェクトを右クリックして,Properties->Java Build Path.LibrariesタブのAdd JARsを押し,libフォルダにある,先頭が._でないライブラリを追加.

  8. Dropbox for DevelopersのMy Appsに行き,先程作ったアプリケーションの[Options]をクリック.一番下に表示されるKeyとSecretの文字列を,DropboxSample.javaのCONSUMER_KEY, CONSUMER_SECRETにそれぞれ入れる.

  9. 実行!とりあえずログインできました.ファイルリストとかは表示されません.あくまでログインだけです.


さて,これからドキュメントとソースコードを読んで使い方について学んでみます.