[python] Authlib를 사용하여 애플리케이션에 소셜 로그인을 통한 사용자 인증 및 사용자 프로필 정보를 로드하는 방법은?

Authlib는 Python 기반의 인증 및 권한 부여 라이브러리로, 소셜 로그인을 통한 사용자 인증 및 사용자 프로필 정보를 로드하는 작업을 간편하게 수행할 수 있습니다. 이 튜토리얼에서는 Authlib를 사용하여 애플리케이션에 소셜 로그인을 통한 사용자 인증을 추가하는 방법과 사용자 프로필 정보를 가져오는 방법을 알아보겠습니다.

1. Authlib 설치하기

Authlib를 설치하려면 pip를 사용하여 다음 명령을 실행하세요:

pip install authlib

2. 소셜 로그인 설정하기

Authlib를 사용하여 소셜 로그인을 통한 사용자 인증을 구현하려면, 해당 소셜 플랫폼에서 발급받은 클라이언트 ID 및 클라이언트 시크릿을 설정해야 합니다. 예를 들어, Google 소셜 로그인을 사용하기 위한 설정은 다음과 같이 진행할 수 있습니다:

from authlib.integrations.flask_client import OAuth

oauth = OAuth()
oauth.register(
    name='google',
    client_id='your-client-id',
    client_secret='your-client-secret',
    server_metadata_url='https://accounts.google.com/.well-known/openid-configuration',
    client_kwargs={'scope': 'openid email profile'}
)

위 코드에서 client_id, client_secret는 Google Developer Console에서 발급된 값으로 대체해야 합니다.

3. 소셜 로그인 및 사용자 정보 가져오기

사용자가 소셜 로그인을 통해 인증되면, 사용자 정보를 가져오기 위해 Authlib의 authorize_access_tokenparse_id_token 메소드를 사용할 수 있습니다. 예를 들어, Flask 애플리케이션의 라우트 함수에서 다음과 같이 사용자 정보를 가져올 수 있습니다:

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

app = Flask(__name__)
oauth = OAuth(app)

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

@app.route('/authorize')
def authorize():
    token = oauth.google.authorize_access_token()
    user_info = oauth.google.parse_id_token(token)
    # 사용자 정보 처리 코드 작성
    return redirect(url_for('profile'))

@app.route('/profile')
def profile():
    # 사용자 정보 템플릿에 렌더링
    return "User profile page"

위 코드에서 login 함수는 사용자를 Google 로그인 페이지로 리디렉션시키는 역할을 합니다. 사용자가 인증을 완료하면 authorize 함수에서 액세스 토큰을 얻고, parse_id_token을 통해 사용자 정보를 추출합니다. 추출한 사용자 정보는 profile 함수에서 템플릿에 렌더링하거나 다른 작업에 활용할 수 있습니다.

마무리

이 튜토리얼에서는 Authlib를 사용하여 애플리케이션에 소셜 로그인을 통한 사용자 인증 및 사용자 프로필 정보를 가져오는 방법을 알아보았습니다. Authlib는 다양한 소셜 플랫폼과의 통합을 제공하므로, 필요한 플랫폼에 대해 설정 및 사용법을 참고하여 추가 구현해보시기 바랍니다.