Как исправить ошибку social_core.exceptions.AuthMissingParameter - PullRequest
1 голос
/ 07 апреля 2019

Я пытаюсь внедрить логин Google в свой проект. У меня уже была относительно работающая схема входа в систему, когда я пытался использовать oauth social_core с Google для входа в систему с учетной записью Google. Он продолжает выдавать ошибку social_core.exceptions.AuthMissingParameter, что означает, что каким-то образом состояние вообще не передается.

Я следовал описанному здесь пошаговому описанию https://fosstack.com/how-to-add-google-authentication-in-django/ в качестве основы для реализации этого. Когда я запускаю код из этого урока (кроме некоторых основных синтаксических ошибок и ошибок версий), все работает как чудо. Однако, когда я пытаюсь реализовать его в своем проекте, возникает ошибка, которую я не могу устранить.

У меня есть файл url.py, я только импортировал несколько файлов и добавил строку

 path('auth/', include('social_django.urls', namespace='social')),

Кроме того, большая часть моего тестового кода похожа на блог: как в моем общем файле.

 AUTHENTICATION_BACKENDS = (
   'social_core.backends.open_id.OpenIdAuth',  # for Google authentication
   'social_core.backends.google.GoogleOpenId',  # for Google authentication
   'social_core.backends.google.GoogleOAuth2',  # for Google authentication

   'django.contrib.auth.backends.ModelBackend',
  )

Какова текущая ситуация: я могу нажать кнопку входа в систему, она переводит меня на страницу входа в систему, где я ввожу свою учетную запись Google, а затем выдает следующее исключение:

Environment:


Request Method: GET
Request URL: http://localhost:3000/auth/complete/google-oauth2/

Django Version: 2.1.7
Python Version: 3.6.5
Installed Applications:
[##Some personal files###
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'markdownx',
 'social_django',
 'livereload']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']



Traceback:

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\django\core\handlers\exception.py" in inner
  34.             response = get_response(request)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\django\core\handlers\base.py" in _get_response
  126.                 response = self.process_exception_by_middleware(e, request)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\django\core\handlers\base.py" in _get_response
  124.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\django\views\decorators\cache.py" in _wrapped_view_func
  44.         response = view_func(request, *args, **kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view
  54.         return view_func(*args, **kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\social_django\utils.py" in wrapper
  49.             return func(request, backend, *args, **kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\social_django\views.py" in complete
  33.                        *args, **kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\social_core\actions.py" in do_complete
  43.         user = backend.complete(user=user, *args, **kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\social_core\backends\base.py" in complete
  40.         return self.auth_complete(*args, **kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\social_core\utils.py" in wrapper
  259.             return func(*args, **kwargs)

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\social_core\backends\oauth.py" in auth_complete
  388.         state = self.validate_state()

File "C:\Users\Daniel\.virtualenvs\project-djMFGD5K\lib\site-packages\social_core\backends\oauth.py" in validate_state
  88.             raise AuthMissingParameter(self, 'state')

Exception Type: AuthMissingParameter at /auth/complete/google-oauth2/
Exception Value: Missing needed parameter state

Где я отредактировал некоторые личные данные, но эти файлы в настоящее время не используются. Я почти уверен, что мои ключи сделаны правильно, потому что параметры верны, когда я печатаю их в терминале после запуска сервера, и за то, что Google удается вообще отправить мне перенаправление.

Редактировать: Почти уверен, что ключи верны, так как, когда я удаляю их или неправильно набираю их, я получаю сообщение об ошибке "сервер не найден", а не об отсутствующем параметре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...