2.DropboxAPIについて – Pythonで始めるDropboxAPI

 今回はDropboxAPIについて説明します。

もくじ

1.概要
 今回書くことについての説明をします。
2.DropboxAPIについて <ー今回はコレ
 DropboxAPIがどんなものか、どういう仕組みで動いているのかについて説明します。
3.DropboxAPIを使う準備をする
 pythonからDropboxAPIを使うために必要な環境の準備をします。
4.サンプルプログラムを作る
 3で作成した環境を使ってサンプルプログラムを作ります。
5.flaskを使ってウェブアプリを作成
 ウェブフレームワークのflaskを使ってウェブアプリを作る練習をします。
6.Dropboxのフォルダ一覧を作る
 flaskを利用して、Dropboxのフォルダ一覧を表示するウェブアプリを作ります。
7.dotcloudで公開する
 PaaSのdotcloudを使い、6で作ったウェブアプリをデプロイすることでみんなに見てもらえるようにします。
8.参考
 参考にしたURLなど。

本記事のソースはGitHubにあります。


2. DropboxAPIについて

2-1. DropboxAPIとは

 DropboxAPIとは、Dropboxのサービスを利用するためのWebAPIです。
 以下はWebAPIを通して操作できる内容になります。おそらくDropboxでできることはほとんどできるのではないかと思います。

  • アカウント情報取得
  • ファイルのアップロード/ダウンロード
  • 履歴の取得/リストア
  • 検索
  • 共有リンクの作成
  • サムネイルの取得
  • ファイルのコピー/削除/移動
  • フォルダの作成

 これらのWebAPIを使うことで、自分が作ったアプリ(Webアプリ、モバイルアプリ、デスクトップアプリ)でDropboxの機能を利用できることになります。
 ただし、これらのWebAPIはOAuthで認証して使う必要があります。
 後述しますが、OAuthの仕組みはちょっと面倒です。
 そこでDropboxではSDKを用意してくれています。現在はiOS、Android、Python、Ruby、Java向けのSDKがダウンロードできます。使い方のチュートリアルもわかりやすいのですぐに使えるようになると思います。
 さらにpythonの場合、easy_installやpipでdropboxというパッケージをインストールすれば簡単に使い始めることができます。

 しかしながら、SDKを使うにしてもOAuthの流れがなんとなくでもわかっていないと、どういう順番で処理をしていいのかわからないと思いますので、まずはOAuthについて簡単に説明します。

2-2. OAuthとは

 OAuthとはWebAPIへのアクセスを許可するための方法のことをいいます。

 誰でも勝手にDropboxAPIを使うことができると、勝手にファイルを操作されてしまうかもしれません。
 そうならないようにユーザー名とパスワードを使って認証するわけですが、ウェブアプリでは単純にユーザー名とパスワードで認証するというのはリスクが伴います。

 例えば、DropboxAPIを使用してサービスを提供するサイトがあるとします。
 そのサイトをある利用者が使おうとしています。

Screen Shot 2011 10 31 at 9 26 37 PM

Screen Shot 2011 10 31 at 9 26 57 PM

Screen Shot 2011 10 31 at 9 27 03 PM

Screen Shot 2011 10 31 at 9 27 08 PM

Screen Shot 2011 10 31 at 9 27 12 PM

利用者がサービス提供サイトに対してユーザー名とパスワードを入力することで、サービス提供サイトが好き放題利用者のアカウントを使える状態になってしまいますし、このユーザー名とパスワードを漏洩することなく安全に保存しておかなければいけません。
また、名前は取得して良いけど、アドレス帳にはアクセスしないでね、というような部分的な許可の仕方もこの方法ではできませんでした。

こりゃーまずい!

ということで考えられたのがOAuthという仕組みです。
先ほどと同様に考えてみます。

Screen Shot 2011 10 31 at 9 27 17 PM

Screen Shot 2011 10 31 at 9 27 21 PM

Screen Shot 2011 10 31 at 9 27 25 PM

Screen Shot 2011 10 31 at 9 27 30 PM

Screen Shot 2011 10 31 at 9 27 35 PM

Screen Shot 2011 10 31 at 9 27 40 PM

利用者がサービス提供サイトに対してユーザー名とパスワードは入力せず、Dropbox側としか認証処理は行いません。その代わりDropbox側からアクセスしていいよ、という情報を受け取ります。これはアクセストークンと呼ばれており、これをDropboxに見せることでWebAPIの利用が可能となります。

2-3. OAuthの実装

 OAuthの実際の処理は割と面倒な処理ですので割愛します。
 こちらの記事がpythonソースもあってわかりやすいです。
  –> やる夫と Python で学ぶ Twitter の OAuth – YoshioriのBlog

 現在はOAuth2.0という規格が考えられており、こちらだとかなり楽になります。

次回

 次回は3.DropboxAPIを使う準備をするです。