pip install django-allauth
Django allauth
로 웹에 구글 로그인 기능을 추가했다. 쉽게 구현할거라 생각했지만, 여러 문제가 있었고 해결했던 것을 여기에 남겨놓으려 합니다...
공식문서를 잘 따라가던 와중 다음과 같은 문제가 생겼습니다.
django.core.exceptions.MultipleObjectsReturned
구글 API Oauth로 분명히 계정은 하나 만들었는데 여러개가 리턴이 되었다니 그게 무슨말이요!!!!
항상 그렇듯이 프로그램은 아무런 잘못이 없죠...ㅎㅎ
Stackoverflow 에 따르면 admin
에 추가한 계정과 Settings.py
에 설정된 SOCIALACCOUNT_PROVIDERS
가 서로 충돌해서 발생한다는 것이었다. Setting.py에 설정된 계정을 지워줬더니 해결되었습니다.
# Provider specific settings
SOCIALACCOUNT_PROVIDERS = {
'google': {
# For each OAuth based provider, either add a ``SocialApp``
# (``socialaccount`` app) containing the required client
# credentials, or list them here:
'APP': {
'client_id': '123',
'secret': '456',
'key': ''
}
}
}
공식문서 양반... 왜 이게 필수적으로 필요하다는 듯이 적어놓은것이요...🥲
이 이외에도 여러 문제가 있었지만 다음과 같이 해결하였습니다.
django.db.utils.OperationalError: no such table: account_emailaddress
migration 확인
allauth.socialaccount.models.SocialApp.DoesNotExist
socialaccount 만들기
SOCIALACCOUNT_PROVIDERS
의 주석을 풀어야합니다.(몇 번은 괜찮지만 계속 이런 짓은 너무 귀찮고 옳은 짓은 아니겠다는 생각이 듭니다.)SITE_ID = 1
을 추가해줬는데 이게 뭔지 모르는 동시에 예전 방식이라는 느낌이 많이 듭니다. 어서 빨리 공부해보고 제거해야 될 것 같습니다.