Я пытаюсь добавить на веб-сайт аутентификацию через социальные сети с помощью Social-auth-app-django .
Поэтому я создал различные приложения для самых популярных веб-сайтов социальных сетей (Facebook, Twitter, Google+) и установил там URL-адрес обратного вызова.
Но я сталкиваюсь с ошибкой, когда меня перенаправляют обратно на сайт, скажем, из Facebook:
Internal Server Error: /oauth/complete/facebook/
Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner
response = get_response(request)
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.5/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_django/utils.py", line 50, in wrapper
return func(request, backend, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_django/views.py", line 32, in complete
redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_core/actions.py", line 41, in do_complete
user = backend.complete(user=user, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 40, in complete
return self.auth_complete(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_core/utils.py", line 252, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_core/backends/facebook.py", line 110, in auth_complete
return self.do_auth(access_token, response, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_core/backends/facebook.py", line 152, in do_auth
return self.strategy.authenticate(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_django/strategy.py", line 115, in authenticate
return authenticate(*args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/django/contrib/auth/__init__.py", line 74, in authenticate
user = backend.authenticate(**credentials)
File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 80, in authenticate
return self.pipeline(pipeline, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 83, in pipeline
out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/social_core/backends/base.py", line 105, in run_pipeline
for idx, name in enumerate(pipeline[pipeline_index:]):
TypeError: unhashable type: 'slice'
Ниже приводится сводка того, как я настроил social_django
:
In settings.py
:
INSTALLED_APPS = [
'social_django',
...
]
AUTHENTICATION_BACKENDS = (
'social_core.backends.google.GoogleOAuth2',
'social_core.backends.twitter.TwitterOAuth',
'social_core.backends.facebook.FacebookOAuth2',
'django.contrib.auth.backends.ModelBackend',
)
SOCIAL_AUTH_FACEBOOK_KEY = 'xxx'
SOCIAL_AUTH_FACEBOOK_SECRET = 'xxx'
...
PIPELINE = {
'PIPELINE_ENABLED': True,
'STYLESHEETS': {...},
'JAVASCRIPT': {...},
'JS_COMPRESSOR': 'pipeline.compressors.NoopCompressor',
'COMPILERS': (
'pipeline.compilers.sass.SASSCompiler',
)
}
После этого я, очевидно, перенес базу данных для создания новых таблиц.
Ниже приведены версии Django
и social_django
:
Django
: 1.10.5social_django
: 1.2.0
Что касается используемого конвейера, я использую django-pipeline
, но он предназначен только для компиляции SASS
файлов в CSS
.
Что может вызвать эту ошибку?
python-social-auth
? - person Hakim   schedule 02.08.2017django-pipeline
. Python Social Auth имеет собственный конвейер. - person Kaushal   schedule 06.08.2017settings.py
, кроме того, что уже фигурирует в вопросе. Единственный определенный конвейер предназначен дляdjango-pipeline
, отвечает ли он за ошибку (т.е. выбирает ли он неправильный конвейер... Я только что добавил свой конвейер к вопросу)? - person Hakim   schedule 06.08.2017