Google OAuth2 and Django 1.8 Problems (AuthCanceled even after Allow)

845 views
Skip to first unread message

Benjamin Bengfort

unread,
Apr 22, 2015, 6:09:56 PM4/22/15
to python-so...@googlegroups.com
I'm using Django 1.8 and trying to implement Google Oauth2. It seems like everything is configured correctly - when I get redirected to Google, and click "allow", however, I get an AuthCanceled error - which seems to be stemming from a 400 response from Google while trying to create a new user. 

Looking in the database, it seems that no auth information was stored in the database. 

Others have mentioned that clearing up session tokens from Google fixed problems like these - which I have done and logged in and out again. I've opened up the Google+ API on the developer console, but still no joy. Any help would be appreciated. 

Matias Aguire

unread,
Apr 23, 2015, 12:03:22 PM4/23/15
to Benjamin Bengfort, python-so...@googlegroups.com

Do you have a full traceback?
--
Matías Aguirre
http://matiasaguirre.net/

Benjamin Bengfort

unread,
Apr 23, 2015, 3:48:47 PM4/23/15
to python-so...@googlegroups.com, benj...@bengfort.com
Of course, here it is below. 

To me the authentication string I'm getting back from Google is correct; it seems that in the middle of the pipeline, something goes wrong when another request is made back to Google. 


AuthCanceled at /complete/google-oauth2/

Authentication process canceled
Request Method:GET
Request URL:http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667
Django Version:1.8
Exception Type:AuthCanceled
Exception Value:
Authentication process canceled
Exception Location:/Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/utils.py in wrapper, line 205
Python Executable:/Users/benjamin/.virtualenvs/stacks/bin/python
Python Version:2.7.6
Python Path:
['/Users/benjamin/Repos/git/stacks/stacks/',
 '/Users/benjamin/Repos/git/stacks/stacks/',
 '/Users/benjamin/.virtualenvs/stacks/bin',
 '/Users/benjamin/.virtualenvs/stacks/lib/python27.zip',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7/plat-darwin',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7/plat-mac',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/benjamin/.virtualenvs/stacks/Extras/lib/python',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7/lib-tk',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7/lib-old',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7/lib-dynload',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
 '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
 '/Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages']
Server time:Thu, 23 Apr 2015 15:44:17 -0400

Traceback Switch to copy-and-paste view

  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
    1.                                 response = wrapped_callback(request, *callback_args, **callback_kwargs)
      ...
  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/django/views/decorators/cache.py in _wrapped_view_func
    1.                     response = view_func(request, *args, **kwargs)
      ...
  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/django/views/decorators/csrf.py in wrapped_view
    1.                     return view_func(*args, **kwargs)
      ...
  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/apps/django_app/utils.py in wrapper
    1.                         return func(request, backend, *args, **kwargs)
      ...
  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/apps/django_app/views.py in complete
    1.                                    redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
      ...
  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/actions.py in do_complete
    1.                     user = backend.complete(user=user, *args, **kwargs)
      ...
  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/backends/base.py in complete
    1.                     return self.auth_complete(*args, **kwargs)
      ...
  • /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/utils.py in wrapper
    1.                             raise AuthCanceled(args[0])
      ...

Request information

GET

VariableValue
num_sessions
u'1'
code
u'4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI'
prompt
u'consent'
session_state
u'97ef05f5646af25013ff45adb1464cca8b3a40d7..6667'
state
u'bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF'
authuser
u'0'
hd
u'bengfort.com'

POST

No POST data

FILES

No FILES data

COOKIES

VariableValue
csrftoken
'Ebt59llrg2iXEHVncVYKhzmXLO9Kt9Bc'
sessionid
'ti7e3j9rckmen25i92b4lzs60tfre1ec'

Settings

Using settings module stacks.settings.development

SettingValue
SOCIAL_AUTH_ADMIN_USER_SEARCH_FIELDS
['username', 'first_name', 'email']
SECURE_BROWSER_XSS_FILTER
False
USE_THOUSAND_SEPARATOR
False
CSRF_COOKIE_SECURE
False
SOCIAL_AUTH_GOOGLE_WHITELISTED_DOMAINS
['bengfort.com']
LANGUAGE_CODE
'en-us'
ROOT_URLCONF
'stacks.urls'
MANAGERS
()
BASE_DIR
'/Users/benjamin/Repos/git/stacks/stacks/stacks'
SILENCED_SYSTEM_CHECKS
[]
DEFAULT_CHARSET
'utf-8'
SESSION_SERIALIZER
'django.contrib.sessions.serializers.JSONSerializer'
STATIC_ROOT
None
ALLOWED_HOSTS
('127.0.0.1', 'localhost')
MESSAGE_STORAGE
'django.contrib.messages.storage.fallback.FallbackStorage'
EMAIL_SUBJECT_PREFIX
'[Django] '
SERVER_EMAIL
''
SECURE_HSTS_SECONDS
0
STATICFILES_FINDERS
('django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder')
SESSION_CACHE_ALIAS
'default'
SESSION_COOKIE_DOMAIN
None
SESSION_COOKIE_NAME
'sessionid'
TIME_INPUT_FORMATS
('%H:%M:%S', '%H:%M:%S.%f', '%H:%M')
SECURE_REDIRECT_EXEMPT
[]
DATABASES
{'default': {'ATOMIC_REQUESTS': False,
             'AUTOCOMMIT': True,
             'CONN_MAX_AGE': 0,
             'ENGINE': 'django.db.backends.postgresql_psycopg2',
             'HOST': 'localhost',
             'NAME': 'stacks',
             'OPTIONS': {},
             'PASSWORD': u'********************',
             'PORT': '5432',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': 'UTC',
             'USER': 'django'}}
EMAIL_SSL_KEYFILE
u'********************'
TEMPLATE_DEBUG
False
FILE_UPLOAD_DIRECTORY_PERMISSIONS
None
FILE_UPLOAD_PERMISSIONS
None
FILE_UPLOAD_HANDLERS
('django.core.files.uploadhandler.MemoryFileUploadHandler',
 'django.core.files.uploadhandler.TemporaryFileUploadHandler')
DEFAULT_CONTENT_TYPE
'text/html'
APPEND_SLASH
True
LOCALE_PATHS
()
DATABASE_ROUTERS
[]
DEFAULT_TABLESPACE
''
YEAR_MONTH_FORMAT
'F Y'
STATICFILES_STORAGE
'django.contrib.staticfiles.storage.StaticFilesStorage'
CACHES
{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
SESSION_COOKIE_PATH
'/'
SECURE_CONTENT_TYPE_NOSNIFF
False
MIDDLEWARE_CLASSES
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'django.middleware.security.SecurityMiddleware')
USE_I18N
True
THOUSAND_SEPARATOR
','
SECRET_KEY
u'********************'
LANGUAGE_COOKIE_NAME
'django_language'
DEFAULT_INDEX_TABLESPACE
''
LOGGING_CONFIG
'logging.config.dictConfig'
TEMPLATE_LOADERS
('django.template.loaders.filesystem.Loader',
 'django.template.loaders.app_directories.Loader')
FIRST_DAY_OF_WEEK
0
WSGI_APPLICATION
'stacks.wsgi.application'
SOCIAL_AUTH_USER_MODEL
'auth.User'
X_FRAME_OPTIONS
'SAMEORIGIN'
CSRF_COOKIE_NAME
'csrftoken'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET
u'********************'
FORCE_SCRIPT_NAME
None
USE_X_FORWARDED_HOST
False
EMAIL_TIMEOUT
None
SECURE_SSL_HOST
None
SIGNING_BACKEND
'django.core.signing.TimestampSigner'
SESSION_COOKIE_SECURE
False
CSRF_COOKIE_DOMAIN
None
FILE_CHARSET
'utf-8'
DEBUG
True
LANGUAGE_COOKIE_DOMAIN
None
DEFAULT_FILE_STORAGE
'django.core.files.storage.FileSystemStorage'
INSTALLED_APPS
('grappelli',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'social.apps.django_app.default',
 'users')
LANGUAGES
(('af', 'Afrikaans'),
 ('ar', 'Arabic'),
 ('ast', 'Asturian'),
 ('az', 'Azerbaijani'),
 ('bg', 'Bulgarian'),
 ('be', 'Belarusian'),
 ('bn', 'Bengali'),
 ('br', 'Breton'),
 ('bs', 'Bosnian'),
 ('ca', 'Catalan'),
 ('cs', 'Czech'),
 ('cy', 'Welsh'),
 ('da', 'Danish'),
 ('de', 'German'),
 ('el', 'Greek'),
 ('en', 'English'),
 ('en-au', 'Australian English'),
 ('en-gb', 'British English'),
 ('eo', 'Esperanto'),
 ('es', 'Spanish'),
 ('es-ar', 'Argentinian Spanish'),
 ('es-mx', 'Mexican Spanish'),
 ('es-ni', 'Nicaraguan Spanish'),
 ('es-ve', 'Venezuelan Spanish'),
 ('et', 'Estonian'),
 ('eu', 'Basque'),
 ('fa', 'Persian'),
 ('fi', 'Finnish'),
 ('fr', 'French'),
 ('fy', 'Frisian'),
 ('ga', 'Irish'),
 ('gl', 'Galician'),
 ('he', 'Hebrew'),
 ('hi', 'Hindi'),
 ('hr', 'Croatian'),
 ('hu', 'Hungarian'),
 ('ia', 'Interlingua'),
 ('id', 'Indonesian'),
 ('io', 'Ido'),
 ('is', 'Icelandic'),
 ('it', 'Italian'),
 ('ja', 'Japanese'),
 ('ka', 'Georgian'),
 ('kk', 'Kazakh'),
 ('km', 'Khmer'),
 ('kn', 'Kannada'),
 ('ko', 'Korean'),
 ('lb', 'Luxembourgish'),
 ('lt', 'Lithuanian'),
 ('lv', 'Latvian'),
 ('mk', 'Macedonian'),
 ('ml', 'Malayalam'),
 ('mn', 'Mongolian'),
 ('mr', 'Marathi'),
 ('my', 'Burmese'),
 ('nb', 'Norwegian Bokmal'),
 ('ne', 'Nepali'),
 ('nl', 'Dutch'),
 ('nn', 'Norwegian Nynorsk'),
 ('os', 'Ossetic'),
 ('pa', 'Punjabi'),
 ('pl', 'Polish'),
 ('pt', 'Portuguese'),
 ('pt-br', 'Brazilian Portuguese'),
 ('ro', 'Romanian'),
 ('ru', 'Russian'),
 ('sk', 'Slovak'),
 ('sl', 'Slovenian'),
 ('sq', 'Albanian'),
 ('sr', 'Serbian'),
 ('sr-latn', 'Serbian Latin'),
 ('sv', 'Swedish'),
 ('sw', 'Swahili'),
 ('ta', 'Tamil'),
 ('te', 'Telugu'),
 ('th', 'Thai'),
 ('tr', 'Turkish'),
 ('tt', 'Tatar'),
 ('udm', 'Udmurt'),
 ('uk', 'Ukrainian'),
 ('ur', 'Urdu'),
 ('vi', 'Vietnamese'),
 ('zh-cn', 'Simplified Chinese'),
 ('zh-hans', 'Simplified Chinese'),
 ('zh-hant', 'Traditional Chinese'),
 ('zh-tw', 'Traditional Chinese'))
USE_L10N
True
SECURE_HSTS_INCLUDE_SUBDOMAINS
False
STATICFILES_DIRS
('/Users/benjamin/Repos/git/stacks/stacks/static',)
PREPEND_WWW
False
SECURE_PROXY_SSL_HEADER
None
GRAPPELLI_ADMIN_TITLE
'Bengfort Stacks Admin'
LANGUAGE_COOKIE_AGE
None
SESSION_COOKIE_HTTPONLY
True
DEBUG_PROPAGATE_EXCEPTIONS
False
CSRF_COOKIE_AGE
31449600
MONTH_DAY_FORMAT
'F j'
LOGIN_URL
'/login/google-oauth2/'
SESSION_EXPIRE_AT_BROWSER_CLOSE
False
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY
u'********************'
TIME_FORMAT
'P'
AUTH_USER_MODEL
'auth.User'
DATE_INPUT_FORMATS
('%Y-%m-%d',
 '%m/%d/%Y',
 '%m/%d/%y',
 '%b %d %Y',
 '%b %d, %Y',
 '%d %b %Y',
 '%d %b, %Y',
 '%B %d %Y',
 '%B %d, %Y',
 '%d %B %Y',
 '%d %B, %Y')
AUTHENTICATION_BACKENDS
('social.backends.google.GoogleOAuth2',
 'django.contrib.auth.backends.ModelBackend')
EMAIL_HOST_PASSWORD
u'********************'
PASSWORD_RESET_TIMEOUT_DAYS
u'********************'
SESSION_FILE_PATH
None
CACHE_MIDDLEWARE_ALIAS
'default'
SESSION_SAVE_EVERY_REQUEST
False
NUMBER_GROUPING
0
SESSION_ENGINE
'django.contrib.sessions.backends.db'
CSRF_FAILURE_VIEW
'django.views.csrf.csrf_failure'
CSRF_COOKIE_PATH
'/'
LOGIN_REDIRECT_URL
'/'
SOCIAL_AUTH_PIPELINE
('social.pipeline.social_auth.social_details',
 'social.pipeline.social_auth.social_uid',
 'social.pipeline.social_auth.auth_allowed',
 'social.pipeline.social_auth.social_user',
 'social.pipeline.user.get_username',
 'social.pipeline.social_auth.associate_by_email',
 'social.pipeline.user.create_user',
 'social.pipeline.social_auth.associate_user',
 'social.pipeline.social_auth.load_extra_data',
 'social.pipeline.user.user_details')
DECIMAL_SEPARATOR
'.'
IGNORABLE_404_URLS
()
MIGRATION_MODULES
{}
TEMPLATE_STRING_IF_INVALID
''
SOCIAL_AUTH_URL_NAMESPACE
'social'
LOGOUT_URL
'/logout/'
EMAIL_USE_TLS
True
FIXTURE_DIRS
()
EMAIL_HOST
''
DATE_FORMAT
'N j, Y'
MEDIA_ROOT
'/Users/benjamin/Repos/git/stacks/stacks/media'
DEFAULT_EXCEPTION_REPORTER_FILTER
'django.views.debug.SafeExceptionReporterFilter'
ADMINS
(('********', '*****'),)
FORMAT_MODULE_PATH
None
DEFAULT_FROM_EMAIL
'webmaster@localhost'
MEDIA_URL
''
DATETIME_FORMAT
'N j, Y, P'
TEMPLATE_DIRS
()
DISALLOWED_USER_AGENTS
()
ALLOWED_INCLUDE_ROOTS
()
LOGGING
{}
PROJECT_DIR
'/Users/benjamin/Repos/git/stacks/stacks'
TEMPLATES
[{'APP_DIRS': True,
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': ['/Users/benjamin/Repos/git/stacks/stacks/templates'],
  'OPTIONS': {'context_processors': ['django.template.context_processors.debug',
                                     'django.template.context_processors.request',
                                     'django.contrib.auth.context_processors.auth',
                                     'django.contrib.messages.context_processors.messages',
                                     'social.apps.django_app.context_processors.backends',
                                     'social.apps.django_app.context_processors.login_redirect']}}]
TEST_RUNNER
'django.test.runner.DiscoverRunner'
SHORT_DATE_FORMAT
'm/d/Y'
CACHE_MIDDLEWARE_KEY_PREFIX
u'********************'
SECURE_SSL_REDIRECT
False
TIME_ZONE
'America/New_York'
FILE_UPLOAD_MAX_MEMORY_SIZE
2621440
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_SSL
False
TEMPLATE_CONTEXT_PROCESSORS
('django.contrib.auth.context_processors.auth',
 'django.template.context_processors.debug',
 'django.template.context_processors.i18n',
 'django.template.context_processors.media',
 'django.template.context_processors.static',
 'django.template.context_processors.tz',
 'django.contrib.messages.context_processors.messages')
SESSION_COOKIE_AGE
1209600
SETTINGS_MODULE
'stacks.settings.development'
USE_ETAGS
False
LANGUAGES_BIDI
('he', 'ar', 'fa', 'ur')
FILE_UPLOAD_TEMP_DIR
None
INTERNAL_IPS
()
STATIC_URL
'/static/'
EMAIL_PORT
587
USE_TZ
True
SHORT_DATETIME_FORMAT
'm/d/Y P'
TEST_NON_SERIALIZED_APPS
[]
PASSWORD_HASHERS
u'********************'
ABSOLUTE_URL_OVERRIDES
{}
LANGUAGE_COOKIE_PATH
'/'
CACHE_MIDDLEWARE_SECONDS
600
EMAIL_SSL_CERTFILE
None
CSRF_COOKIE_HTTPONLY
False
DATETIME_INPUT_FORMATS
('%Y-%m-%d %H:%M:%S',
 '%Y-%m-%d %H:%M:%S.%f',
 '%Y-%m-%d %H:%M',
 '%Y-%m-%d',
 '%m/%d/%Y %H:%M:%S',
 '%m/%d/%Y %H:%M:%S.%f',
 '%m/%d/%Y %H:%M',
 '%m/%d/%Y',
 '%m/%d/%y %H:%M:%S',
 '%m/%d/%y %H:%M:%S.%f',
 '%m/%d/%y %H:%M',
 '%m/%d/%y')
EMAIL_HOST_USER
''

You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code.


Matias Aguire

unread,
Apr 23, 2015, 4:14:31 PM4/23/15
to Benjamin Bengfort, python-so...@googlegroups.com

I think the problem is with this call [1], which is failing because
Google returns a 400 response, as part of the debug there should be an
"err" variable (around here [2]), try checking that value and the
"response" attribute in it, specially the response message to determine
why Google is failing it.

[1]: https://github.com/omab/python-social-auth/blob/master/social/backends/oauth.py#L374-L379
[2]: https://github.com/omab/python-social-auth/blob/master/social/utils.py#L205

Matías

Benjamin Bengfort <benj...@bengfort.com> writes:
> Of course, here it is below.
>
> To me the authentication string I'm getting back from Google is correct; it
> seems that in the middle of the pipeline, something goes wrong when another
> request is made back to Google.
>
>
> AuthCanceled at /complete/google-oauth2/
>
> Authentication process canceled
>
> Request Method:GETRequest URL:
> http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667Django
> Version:1.8Exception Type:AuthCanceledException Value:
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/django/core/handlers/base.py
> in get_response
> 1.
>
> response = wrapped_callback(request, *callback_args, **callback_kwargs)
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/django/views/decorators/cache.py
> in _wrapped_view_func
> 1.
>
> response = view_func(request, *args, **kwargs)
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/django/views/decorators/csrf.py
> in wrapped_view
> 1.
>
> return view_func(*args, **kwargs)
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/apps/django_app/utils.py
> in wrapper
> 1.
>
> return func(request, backend, *args, **kwargs)
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/apps/django_app/views.py
> in complete
> 1.
>
> redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/actions.py
> in do_complete
> 1.
>
> user = backend.complete(user=user, *args, **kwargs)
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/backends/base.py
> in complete
> 1.
>
> return self.auth_complete(*args, **kwargs)
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
> -
> /Users/benjamin/.virtualenvs/stacks/lib/python2.7/site-packages/social/utils.py
> in wrapper
> 1.
>
> raise AuthCanceled(args[0])
>
> ...
> ▶ Local vars
> <http://localhost:8000/complete/google-oauth2/?state=bxwcaWZNk8VYVg6Hb6nuFoy66SUhMWqF&code=4/DJQWOTTt3qMdo7u6EL7yWyxBwYgcQLsyhcLM4s2Rv7Q.Qk1ZH74-tOYZaDn_6y0ZQNiKH57PmQI&authuser=0&num_sessions=1&hd=bengfort.com&prompt=consent&session_state=97ef05f5646af25013ff45adb1464cca8b3a40d7..6667#>
>
> Request informationGETVariableValuenum_sessions

Benjamin Bengfort

unread,
Apr 23, 2015, 6:02:17 PM4/23/15
to python-so...@googlegroups.com, benj...@bengfort.com
Hi Matías,

Thanks for pointing me the right direction; when I was able to get to the response by Google (bad client secret) - I discovered that my 
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET setting contained quotation marks since I was fetching it from the environment, and my environment was improperly configured. Cheers!

Ben

Shubh Aggarwal

unread,
Feb 21, 2016, 4:36:14 AM2/21/16
to python-social-auth
Hello
How did you get around this error? I am facing the same issue for Google OAuth2 integration for authentication on my app and I am getting the same error. AuthCancelled.

Here is a traceback:

Authentication process canceled
Traceback (most recent call last):
  File "/home/jx_3/.virtualenvs/trysocial/local/lib/python2.7/site-packages/rest_social_auth/views.py", line 108, in post
    user = self.get_object()
  File "/home/jx_3/.virtualenvs/trysocial/local/lib/python2.7/site-packages/rest_social_auth/views.py", line 142, in get_object
    user = self.request.backend.complete(user=user)
  File "/home/jx_3/.virtualenvs/trysocial/local/lib/python2.7/site-packages/social/backends/base.py", line 41, in complete
    return self.auth_complete(*args, **kwargs)
  File "/home/jx_3/.virtualenvs/trysocial/local/lib/python2.7/site-packages/social/utils.py", line 232, in wrapper
    raise AuthCanceled(args[0])
AuthCanceled: Authentication process canceled

Erick Peirson

unread,
Oct 5, 2016, 11:43:07 AM10/5/16
to python-social-auth
The utils.handle_http_errors decorator swallows all kinds of exceptions, so it's hard to say precisely what the underlying cause might be. I encountered this exception in this case when PSA was passing a nonce to the Google API, which is not supported. 
Reply all
Reply to author
Forward
0 new messages