Flickr API ドキュメント日本語訳 |
ユーザー認証
Flickrの API メソッドの多くは実行ユーザのログインが必要です。昔はFlickr独自の認証APIが使用されていましたが、今では業界標準であるOAuth仕様のみが認証に使用できます。 標準技術のOAuthを使用することで、あなたのアプリケーションを使うユーザーはFlickrがサポートする異なるアカウント(Yahoo! ID, Google ID, Facebook)でFlickrアカウントへ安全にログインすることができます。FlickrのOAuth認証フローは、ウェブアプリケーション、デスクトップアプリケーション、モバイルアプリケーション全て同じように動作します。
古いAuthentication APIもまだ使用できますが、現在は非推奨です。
FlickrでOAuthを使う
OAuthとは?
OAuthはオープンで、シンプルで、安全なプロトコルです。アプリケーションに代わり、ユーザーの認証やFlickrとのやり取りをできるようにします。 エンドユーザーの情報は身元が分からないよう安全に転送されます。 Flickrでは、あなたに代わりFlickrと通信をしようとしているアプリケーションが与えられた権限の範囲内で動作しているかを確認するためにOAuthを使用しています。
このページでは、OAuth Core 1.0 Revision Aの仕様と、認証プロセスがFlickrとどのようなやり取りをするかを記載しています。
OAuth を使う最も簡単な方法は、プログラム言語のライブラリを使うことです。 あなたが使っているプログラム言語のどのライブラリが該当するか調べるには、OAuth Code のページを参照してください。
また、古い認証APIを使っている既存のアプリケーションがOAuthへ移行するための移行手順もあります。
OAuth のフローには 3 つのステップがあります:
Flickr のOAuth 認証フロー
リクエストを署名する
Flickr APIに対する全てのリクエストは必ず署名されていなければなりません。 現在、 Flickrでは HMAC-SHA1 署名暗号化のみサポートしています。
まず最初に、あなたはあなたのリクエストからベースとなる文字列を作成します。 ベース文字列はHTTP verb・リクエストURL・名前順に並べられた全てのリクエストパラメータを連結して作られます。 各パラメータはバイト値を辞書式順序で並べ、'&'で区切られています。
Use the base string as the text
and the key
is the concatenated values of the Consumer Secret and Token Secret, separated by an '&'.
例えば、以下のようなURLを使うと:
https://www.flickr.com/services/oauth/request_token ?oauth_nonce=89601180 &oauth_timestamp=1305583298 &oauth_consumer_key=653e7a6ecc1d528c516cc8f92cf98611 &oauth_signature_method=HMAC-SHA1 &oauth_version=1.0 &oauth_callback=http%3A%2F%2Fwww.example.com
ベース文字列は以下のようになります:
GET&https%3A%2F%2Fwww.flickr.com%2Fservices%2Foauth%2Frequest_token&oauth_callback%3Dhttp%253A%252F%252Fwww.example.com%26oauth_consumer_key%3D653e7a6ecc1d528c516cc8f92cf98611%26oauth_nonce%3D95613465%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1305586162%26oauth_version%3D1.0
署名は以下のように作成されます:
7w18YS2bONDPL%2FzgyzP5XTr5af4%3D
リクエストトークンを取得する
リクエストトークンの URL:
https://www.flickr.com/services/oauth/request_token
ユーザーの認証を得るための最初のステップは、あなたのコンシューマーキーを使用してリクエストトークンを取得することです。 これはアプリケーションに対してユーザーを認証するために使われる仮のトークンです。 このトークンは、後で秘密トークンと一緒にアクセストークンとの交換に使われます。
以下がリクエストトークンを取得するためのサンプルURLです:
https://www.flickr.com/services/oauth/request_token ?oauth_nonce=95613465 &oauth_timestamp=1305586162 &oauth_consumer_key=653e7a6ecc1d528c516cc8f92cf98611 &oauth_signature_method=HMAC-SHA1 &oauth_version=1.0 &oauth_signature=7w18YS2bONDPL%2FzgyzP5XTr5af4%3D &oauth_callback=http%3A%2F%2Fwww.example.com
Flickrは以下のような応答を返します:
oauth_callback_confirmed=true &oauth_token=72157626737672178-022bbd2f4c2f3432 &oauth_token_secret=fccb68c4e6103197
ユーザー認証の取得
ユーザー認証 URL:
https://www.flickr.com/services/oauth/authorize
リクエストトークンを取得した後、アプリケーションはユーザーに対してFlickrの認証ページを提示する必要があります。認証ページで、ユーザーは自分のデータへのアクセス権限をこのアプリケーションに対して与えても良いか確認されます。 認証フロー設定で定義されているように、承認ページではアプリケーションが要求している権限の一覧がユーザーに掲示されます。
また、オプションでアクセス権のパラメータ(読み込み権限、書き込み権限、削除権限を申請するためのパラメータ)も設定することができます。 このパラメータは、あなたのアプリケーションの認証フローで定義されている設定を上書きします。
認証が完了した後、 Flickr はあなたのリクエストトークンで指定されていたoauth_callback
を使ってユーザーをアプリケーションに戻します。
以下が、サンプルの認証URLです:
https://www.flickr.com/services/oauth/authorize ?oauth_token=72157626737672178-022bbd2f4c2f3432
以下が、認証後のコールバックのサンプルです。:
http://www.example.com/ ?oauth_token=72157626737672178-022bbd2f4c2f3432 &oauth_verifier=5d1b96a26b494074
リクエストトークンとアクセストークンを交換する
アクセストークンの URL:
https://www.flickr.com/services/oauth/access_token
ユーザがアプリケーションを承認した後、承認済みリクエストトークンとアクセストークンを交換することができます。このアクセストークンはアプリケーションに格納し、Flickrへ送信する認証済みリクエストを作成するために使うようにしてください。
以下がアクセストークンをリクエストする際のサンプルです:
https://www.flickr.com/services/oauth/access_token ?oauth_nonce=37026218 &oauth_timestamp=1305586309 &oauth_verifier=5d1b96a26b494074 &oauth_consumer_key=653e7a6ecc1d528c516cc8f92cf98611 &oauth_signature_method=HMAC-SHA1 &oauth_version=1.0 &oauth_token=72157626737672178-022bbd2f4c2f3432 &oauth_signature=UD9TGXzrvLIb0Ar5ynqvzatM58U%3D
Flickr は以下のような応答を返します:
fullname=Jamal%20Fanaian &oauth_token=72157626318069415-087bfc7b5816092c &oauth_token_secret=a202d1f853ec69de &user_nsid=21207597%40N07 &username=jamalfanaian
OAuthを使ってFlickr APIを実行する
アクセストークンがアプリケーションに付与された後は、Flickr APIに対しての認証済みリクエストを作成できるようになります。 全てのリクエストは暗号化されていないHTTPを使って作成されるため、FlickrではHMAC-SHA1 の暗号化が必要です。
以下が、flickr.test.login APIのために作成されたリクエストの例です:
https://api.flickr.com/services/rest ?nojsoncallback=1 &oauth_nonce=84354935 &format=json &oauth_consumer_key=653e7a6ecc1d528c516cc8f92cf98611 &oauth_timestamp=1305583871 &oauth_signature_method=HMAC-SHA1 &oauth_version=1.0 &oauth_token=72157626318069415-087bfc7b5816092c &oauth_signature=dh3pEH0Xk1qILr82HyhOsxRv1XA%3D &method=flickr.test.login
Flickr は以下のような応答を返します:
{"user":{"id":"21207597@N07", "username":{"_content":"jamalfanaian"}}, "stat":"ok"}
古い認証APIからの移行
古い認証 APIで使っていた古い認証トークンを、OAuthのアクセストークンに交換することができます。 その方法は、 flickr.auth.oauth.getAccessToken APIに対して認証済みリクエストを送信するだけです。 APIによって、リクエスト作成時に使われた古いトークンは新しいOAuth認証トークンに交換されます。
古い認証トークンは、このAPIメソッドを実行した24時間後に削除されるので気をつけてください。
注意事項 |