프로젝트의 소셜 로그인 구현 중 지속 발생하는 500 에러에 대한 정리
해당 코드에서 accept
로 구글로그인 진행 후 회원 토큰을 발급 받는 과정에 status
가 200이 아닌 500이 나온다.
그러면서 아래의 오류가 발생한다.
TypeError: string indices must be integers
에러가 발생한 원인을 찾아보았다.
django-allauth
패키지에서 문제가 생겼다는 걸 찾게 되었다.
찾게 된 방법은 에러 메세지 바로 위에 response["id_token"]
에서 TypeError
가 발생한 것을 확인했고 allauth
패키지에서 발견하였다.
allauth
릴리즈노트를 찾아보았다.
0.52.0 (2022-12-29)
Note worthy changes
- Officially support Django 4.1.
- New providers: OpenID Connect, Twitter (OAuth2), Wahoo, DingTalk.
Introduced a new provider setting OAUTH_PKCE_ENABLED that enables the PKCE-enhanced Authorization Code Flow for OAuth 2.0 providers.
- When ACCOUNT_PREVENT_ENUMERATION is turned on, enumeration is now also prevented during signup, provided you are using mandatory email verification. There is a new email template (templates/account/email/acccount_already_exists_message.txt) that will be used in this scenario.
- Updated URLs of Google's endpoints to the latest version; removed a redundant userinfo call.
- Fixed Pinterest provider on new api version.
버전이 업데이트가 되면서 오류를 발생시킨 것
allauth
라이브러리를 찾아보니 googleOAuth2Adapter
클래스가 바뀜
response["id_token"]
에서 인덱싱 오류가 발생했다.
해당 코드를 커스텀해서 사용하려고 하던가 인덱스 값 id_token
부분을 손 대려고 했는데 실패하여 버전을 낮춰서 진행해야 할 듯 하다.
poetry add django-allauth==0.51.0
실행되는 버전으로 낮춰서 설치하였다.