[python] Authlib를 사용하여 애플리케이션에 소셜 로그인 기능을 추가하고 사용자 데이터를 저장하는 방법은?

Authlib는 Python 기반의 강력한 인증 및 권한 부여 라이브러리입니다. 이를 사용하여 애플리케이션에 소셜 로그인 기능을 추가하고 사용자 데이터를 저장하는 것은 매우 간단합니다. 이제 Authlib를 사용하여 소셜 로그인을 구현하고 사용자 데이터를 저장하는 방법을 알아보겠습니다.

1. Authlib 설치하기

pip install Authlib

2. 소셜 로그인 구현하기

Authlib는 다양한 소셜 로그인 제공업체를 지원합니다. 간단한 예제로, Google 로그인을 구현해보겠습니다. Google 개발자 콘솔에서 애플리케이션을 등록하고 클라이언트 ID와 클라이언트 시크릿을 받아야합니다.

from flask import Flask, redirect, url_for
from authlib.integrations.flask_client import OAuth

app = Flask(__name__)
app.secret_key = 'your secret key'
oauth = OAuth(app)

google = oauth.register(
    name='google',
    client_id='your client id',
    client_secret='your client secret',
    access_token_url='https://accounts.google.com/o/oauth2/token',
    access_token_params=None,
    authorize_url='https://accounts.google.com/o/oauth2/auth',
    authorize_params=None,
    api_base_url='https://www.googleapis.com/oauth2/v1/',
    client_kwargs={'scope': 'openid profile email'}
)

3. 로그인 라우트 설정하기

@app.route('/login/google')
def login_google():
    redirect_uri = url_for('authorize_google', _external=True)
    return google.authorize_redirect(redirect_uri)

@app.route('/authorize/google')
def authorize_google():
    google.authorize_access_token()
    resp = google.get('userinfo')
    profile = resp.json()

    # 사용자 데이터 저장
    # 예를 들어, 데이터베이스에 저장하는 경우
    # User.create(name=profile['name'], email=profile['email'])
    
    return redirect('/')

4. 사용자 데이터 저장하기

로그인 성공 후 사용자 데이터를 저장하기 위해서는 해당 데이터를 적절한 데이터베이스나 데이터 저장소에 저장해야합니다. 위의 코드에서 주석 부분을 복제하고 이를 데이터베이스에 맞게 수정하면 됩니다.

결론

Authlib를 사용하여 소셜 로그인 기능을 애플리케이션에 추가하고 사용자 데이터를 저장하는 방법에 대해 알아보았습니다. 이는 단순한 예제이며, 실제로는 더 복잡한 구현이 필요할 수 있습니다. Authlib의 공식 문서와 예제를 참조하여 자세한 내용을 파악하고 원하는 기능을 구현하세요.

참고 자료