【Django1.4】AuthCancelled の時に指定したページに飛ばす 【django-social-auth】

問題点

  • 例えばtwitterの認証の際、twitterで用意されたキャンセルボタンを押して戻ってくると
AuthCancelled at /complete/twitter/
Authentication process canceled
  • この時に指定したurlに飛ばしたかった。

解決法

  • settings.pyで以下の値がひとつでもTrueならurlに飛ばないのでこれらをFalseに
_SOCIAL_AUTH_RAISE_EXCEPTIONS = False
SOCIAL_AUTH_RAISE_EXCEPTIONS = False
DEBUG = False
  • settings.pyに例えば以下のように値を設定
SOCIAL_AUTH_BACKEND_ERROR_URL = '/accounts/error/'
LOGIN_ERROR_URL = '/accounts/error/'
LOGIN_URL = '/accounts/login/'
  • social_auth.middleware.SocialAuthExceptionMiddlewareをカスタマイズする(しなくてもよし)
  • MIDDLEWARE_CLASSESにもしdjango-social-authで用意されたものを使うなら以下を追加
…
'social_auth.middleware.SocialAuthExceptionMiddleware',