この連休に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
コメント