FlickrのOAuthで認証サイトにリダイレクトする際にはpermsパラメータが必要

この連休にFlickrのOAuth周りを触っていてハマったこと。

FlickrでOAuthのユーザー認証をする場合、Request Tokenの取得後にFlickrの認証ページにリダイレクトするのが流れだと思うのだけど、FlickrへリダイレクトするURLにパラメータを追加でしていしないとユーザー情報を入力しても"Oops! Flickr doesn't recognise the permission set."というメッセージが表示され、認証エラーになってしまう。

Flickr公式のドキュメント(http://www.flickr.com/services/api/auth.oauth.html)だと、サイトに飛ばすときは

http://www.flickr.com/services/oauth/authorize?oauth_token=72157626737672178-022bbd2f4c2f3432

のようなoauth_tokenのみがクエリに付ければいいとなっているけど、実際は"perms"パラメータもつけないとうまく動作しない。

Additionally, you can pass the optional perms= parameter, asking for read, write, or delete privileges. This parameter will override the setting defined in your application's authentication flow.

サイトの説明にはoptionalとなっているので、指定しなければデフォルト(readのみ)になってくれるかと思っていたのだけど、違うようだ。

http://www.flickr.com/services/oauth/authorize?oauth_token=72157626737672178-022bbd2f4c2f3432&perms=read

↑この形が正解。

OAuthにsignpostのライブラリを使っている場合は、OAuthProvider#retrieveRequestToken()で返るリダイレクトURLに自分でpermsパラメータを付ける。

(参考)http://www.flickr.com/groups/api/discuss/72157626891119797/#comment72157627007728025

タイトルとURLをコピーしました