[python] Flask를 이용한 소셜 로그인 구현 방법

Flask는 파이썬으로 웹 어플리케이션을 만들기 위한 경량화된 웹 프레임워크로, 소셜 로그인을 구현하는 데에 적합한 도구입니다. 이번 블로그에서는 Flask를 이용하여 소셜 로그인을 구현하는 방법에 대해 알아보겠습니다.

1. 소셜 로그인 기능 구현을 위한 준비

먼저, Flask 어플리케이션에 소셜 로그인 기능을 추가하기 위해 각 소셜 플랫폼의 개발자 계정을 생성하고 API 키 및 시크릿 키를 발급받아야 합니다. 일반적으로는 Google, Facebook, Twitter 등의 소셜 플랫폼에서 해당 정보를 얻을 수 있습니다.

2. Flask 환경 설정

Flask 어플리케이션에서 소셜 로그인을 구현하기 위해서는 Flask-OAuthlib과 같은 라이브러리를 설치해야 합니다.

pip install Flask-OAuthlib

또한, Flask 어플리케이션에서 소셜 로그인을 위한 필수 설정을 config.py 파일에 추가해야 합니다.

import os

class Config:
    # 소셜 로그인을 위한 키 및 시크릿 키 설정
    GOOGLE_CLIENT_ID = os.environ.get('GOOGLE_CLIENT_ID')
    GOOGLE_CLIENT_SECRET = os.environ.get('GOOGLE_CLIENT_SECRET')
    # 다른 소셜 플랫폼에 대한 설정도 추가 가능
    # ...

위 예제에서는 환경변수에서 구글 클라이언트 ID와 시크릿 키를 가져오도록 구성하였습니다.

3. 소셜 로그인 기능 구현

Flask 어플리케이션에서 소셜 로그인을 위한 라우트를 추가하고, Flask-OAuthlib을 사용하여 각 소셜 플랫폼과의 연동을 수행합니다.

아래는 Google 소셜 로그인을 구현하는 예시입니다.

from flask import Flask, url_for, session, redirect
from flask_oauthlib.client import OAuth

app = Flask(__name__)

app.config.from_object('config')
oauth = OAuth(app)
google = oauth.remote_app(
    'google',
    consumer_key=app.config.get('GOOGLE_CLIENT_ID'),
    consumer_secret=app.config.get('GOOGLE_CLIENT_SECRET'),
    request_token_params={
        'scope': 'email'
    },
    base_url='https://www.googleapis.com/oauth2/v1/',
    request_token_url=None,
    access_token_method='POST',
    access_token_url='https://accounts.google.com/o/oauth2/token',
    authorize_url='https://accounts.google.com/o/oauth2/auth',
)

@app.route('/login')
def login():
    callback = url_for('authorized', _external=True)
    return google.authorize(callback=callback)

@app.route('/login/authorized')
def authorized():
    response = google.authorized_response()
    if response is None or response.get('access_token') is None:
        return 'Access denied: reason=%s error=%s' % (
            request.args['error_reason'],
            request.args['error_description']
        )
    session['access_token'] = response['access_token']
    return 'Logged in successfully'

위 코드는 Google 소셜 로그인을 위한 라우트 및 함수를 구현한 것으로, 실제로는 구현해야 하는 로그인 완료 후의 동작 등을 추가로 구현해야 합니다.

4. 참고 자료

위에서는 Google을 예시로 들었지만, 다른 소셜 플랫폼에 대해서도 비슷한 방식으로 소셜 로그인을 구현할 수 있습니다. Flask와 Flask-OAuthlib은 각 소셜 플랫폼의 API와 연동하여 소셜 로그인 기능을 쉽게 추가할 수 있도록 도와주는 강력한 도구입니다.