DropboxのAPIを使ったメモ

Dropbox開発の前に
TwitterのAPIを特定のライブラリなどを使わずビューワーを作ってみました。
 参考サイトはこちら OAuthをPHPでイチから書いてみた
OAuthをここで学び、次は自分で興味のあったDropboxのPhoto Viewerを作ってみました。
Dropbox開発を開始・・・
挙動をきちんと理解するために、引き続きライブラリなどを使わずに書いてみようと思ったのですが
トークンリクエストにInvalid OAuthが返ってきてしまい、行き詰ってしまいました。
SDKへの切り替え
やむなく、Dropboxが提供しているSDKを利用しました。SDKはOfficial版ではPHP用がなく、
DropboxのサイトにはThird Party製としてSDKへのリンクが貼られていました。
https://github.com/BenTheDesigner/Dropbox
これです。SDKを利用するのは初めてだったので、結構苦労したのでメモを残します。
+Dropbox
+tests
+examples
Dropboxの開発者向けページからキーを取得し、
bootstrap.phpのkeyにConsumer_keyを、secretにConsumer_Secretを設定します。
このフォルダ構造のままWebサーバにアップロードします。
DropboxのAPIでは2種類のアクセス権を提供しています。
App Only・・・ Dropboxのトップフォルダ配下のApps/にのみアクセスできるアプリ
Full    ・・・ Dropboxの全フォルダにアクセス可能なアプリ
当初はFullで作ろうかと思いましたが、Dropboxの推奨もあり、App Onlyにしてみました。
まずは代表的な挙動を把握するためのサンプルを起動します。
/examples/putFile.php デフォルトでapi_upload_test.txtを/Apps/フォルダにアップロードします
/examples/metaData.php putFile.phpで作成したapi_upload_test.txtのメタデータを取得します
/examples/getFile.php api_upload_test.txtを取得します。
あとはputFile.phpのファイル名を変えてみたりすることでなんとなく挙動はわかりました。
これらのファイルは先ほどのSDK内のDropboxフォルダ内のライブラリを使った実装例になっています。
実際のアプリケーション開発ではexample/*.phpのようにDropbox/API.phpの関数を呼び出すことで実装します。
API.phpにはDropboxで提供しているREST APIが簡単に呼べるようになっています。OAuthも自動的に実装されます。
実装してみての感想
ファイラーのようなものを実装するためには、何度もmetaData APIを呼び出すことになりますが、
これが結構時間がかかります。私の環境では3秒ほどかかるのでちょっと遅い印象です。
これはDropboxも把握しているようで、推奨はmetaData APIを一度使ったら(アプリ側で)キャッシュしておき、
軽量なHashオプションで、更新がない場合にはキャッシュを利用することで高速化することを薦めています。
MetaData –hashでキャッシュと比較、一致していればキャッシュ利用。キャッシュと不一致であれば、
MetaDataを再度発行(hashオプションなし)し、フォルダの情報を取得する。
単純にファイルのパス名を取得するくらい高速に返してもらえると助かるのですが方法が無さそうです。
あとはThumbnailを使って画像ビューワーを作ったのですが、Stringで返された画像をバイナリに戻す方法が
わからず苦労しました。
というフォーマットでxxxxxxxx部分にbase64エンコードの
Stringを入れればOKです。base64_encode($image_string);でエンコードができます。
もう一つの問題はサムネイルの画像サイズがざっくりとしかないことです。
xs 32×32
s 64×64
m 128×128
l 640×480
xl 1024×768
xlで取得して、任意のサイズにリサイズが良いのかもしれませんが暫定的にはmを選んで使うことにしました。
これを活用してApps/配下の画像をサムネイル表示できるアプリが出来ました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です