[python] 파이썬을 이용한 소셜 로그인 구현 방법

인터넷 사용자들은 소셜 로그인을 통해 다양한 웹사이트 및 애플리케이션에 쉽게 가입하고 로그인할 수 있습니다. 이번 포스트에서는 파이썬Django 프레임워크를 사용하여 소셜 로그인을 구현하는 방법을 알아보겠습니다.

1. 소셜 로그인을 위한 준비

먼저, Django 프로젝트를 생성하고 설정합니다. 그리고 소셜 로그인을 지원하는 Python 패키지 중 하나인 django-allauth를 설치합니다.

pip install django-allauth

설치가 완료되면 settings.py 파일에 다음과 같이 소셜 로그인을 위한 설정을 추가합니다.

# settings.py

INSTALLED_APPS = [
    ...
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
    'allauth.socialaccount.providers.facebook',
    ...
]

AUTHENTICATION_BACKENDS = [
    ...
    'allauth.account.auth_backends.AuthenticationBackend',
    ...
]

SITE_ID = 1

LOGIN_REDIRECT_URL = '/'

2. Google 소셜 로그인 구현

이제, Google 소셜 로그인을 구현해보겠습니다. 먼저, Google API Console에서 프로젝트를 생성하고 OAuth 2.0 클라이언트 ID를 발급받습니다. 발급받은 클라이언트 ID와 시크릿 키를 settings.py 파일에 추가합니다.

# settings.py

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': [
            'profile',
            'email',
        ],
        'AUTH_PARAMS': {
            'access_type': 'online',
        }
    }
}

SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_STORE_TOKENS = False

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'your-client-id'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'your-client-secret'

이제 아래와 같이 유저가 Google로부터 인증을 수락할 수 있도록 템플릿을 업데이트합니다.

<!-- google_login.html -->

<a href="{% provider_login_url 'google' %}">Google로 로그인</a>

3. Facebook 소셜 로그인 구현

마찬가지로, Facebook 소셜 로그인 또한 간단하게 구현할 수 있습니다. 먼저, Facebook Developer 사이트에서 애플리케이션을 생성하고 앱 ID 및 시크릿 키를 발급받습니다. 이후 settings.py 파일에 다음과 같이 설정을 추가합니다.

# settings.py

SOCIALACCOUNT_PROVIDERS = {
    'facebook': {
        'METHOD': 'oauth2',
        'SCOPE': ['email', 'public_profile'],
        'AUTH_PARAMS': {'auth_type': 'reauthenticate'},
        'INIT_PARAMS': {'cookie': True},
        'FIELDS': [
            'id',
            'email',
            'name',
            'first_name',
            'last_name'
        ],
        'EXCHANGE_TOKEN': True,
        'LOCALE_FUNC': 'path.to.callable',
        'VERIFIED_EMAIL': False,
        'VERSION': 'v3.0',
    }
}

SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_STORE_TOKENS = False

SOCIAL_AUTH_FACEBOOK_KEY = 'your-app-id'
SOCIAL_AUTH_FACEBOOK_SECRET = 'your-app-secret'

이후 아래와 같이 Facebook으로 로그인할 수 있는 링크를 템플릿에 추가합니다.

<!-- facebook_login.html -->

<a href="{% provider_login_url 'facebook' %}">Facebook으로 로그인</a>

마무리

이제 소셜 로그인이 구현된 Django 애플리케이션을 실행해보세요. 사용자들은 Google이나 Facebook 계정을 통해 간편하게 로그인할 수 있게 될 것입니다.

이상으로, 파이썬을 이용한 소셜 로그인 구현 방법에 대해 알아보았습니다. 다음은 여러분이 이를 실제 프로젝트에 적용하여 사용자 경험을 향상시킬 수 있기를 바랍니다.

참고 자료