When trying to login with python-social-auth specifying a redirection url parameter next= that contains international characters, then a UnicodeEncodeError is raised. If the next= parameter has only ascii characters, then everything works as expected without problem.
Environment:
Request Method: GET
Request URL: https://mydomain.is.here/external/social_auth/login/facebook/?next=/user/%CE%B5%CF%80%CE%B9%CE%BB%CE%BF%CE%B3%CE%AD%CF%82/
Django Version: 1.6.2.dev20140130114236
Python Version: 2.7.3
Installed Applications:
[ 'debug_toolbar',
'some of my custom apps'
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'django.contrib.humanize',
'django.contrib.sites',
'django.contrib.staticfiles',
'django.contrib.admin',
'django.contrib.sitemaps',
'django.contrib.admindocs',
'django.contrib.gis',
'registration',
'captcha',
'djcelery',
'multilangdatetime',
'compressor',
'social.apps.django_app.default',
'south',
'debug_toolbar_htmltidy',
'rosetta',
'kombu.transport.django',]
Installed Middleware:
['django_statsd.middleware.GraphiteRequestTimingMiddleware',
'django_statsd.middleware.GraphiteMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'social.apps.django_app.middleware.SocialAuthExceptionMiddleware',
'django.middleware.common.BrokenLinkEmailsMiddleware',
'django.middleware.transaction.TransactionMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware']
Traceback:
File "/usr/local/systemwide-editable-pip-installed-packages/django/django/core/handlers/base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/soulman/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/social/apps/django_app/utils.py" in wrapper
45. return func(request, backend, *args, **kwargs)
File "/home/soulman/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/social/apps/django_app/views.py" in auth
12. return do_auth(request.social_strategy, redirect_name=REDIRECT_FIELD_NAME)
File "/home/soulman/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/social/actions.py" in do_auth
20. redirect_uri)
File "/home/soulman/.virtualenvs/myvirtualenv/local/lib/python2.7/site-packages/social/utils.py" in sanitize_redirect
55. not isinstance(redirect_to.decode(), six.string_types):
Exception Type: UnicodeEncodeError at /external/social_auth/login/facebook/
Exception Value: 'ascii' codec can't encode characters in position 6-13: ordinal not in range(128)
python-social-auth 0.1.21, django 1.6, python 2.7
When trying to login with python-social-auth specifying a redirection url parameter next= that contains international characters, then a UnicodeEncodeError is raised. If the next= parameter has only ascii characters, then everything works as expected without problem.
Attached traceback: