ユーザー認証

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 つのステップがあります:

  1. リクエストトークンの取得
  2. ユーザー認証の取得
  3. リクエストトークンとアクセストークンの交換
Flickr OAuth 認証フロー

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時間後に削除されるので気をつけてください。



注意事項

  • 本サイトはflickrのサイトを翻訳したものであり、flickrに関する著作権は全てそちらに帰属しています。
  • 誤訳が判明した場合、より分かりやすい言い回しが見つかった場合、原文が変更された場合などにより、本サイトの内容は予告なく変更されることがあります。
  • 誤訳についての指摘や未翻訳部分についての助言など、ご意見についてはこちらへいただけると助かります。
  • 翻訳の内容には誤りがある可能性があります。本サイトの記述内容によって不利益が発生した場合も、サイト管理人は一切の責任を負いません。
  •