[python] Authlib를 사용하여 애플리케이션에 소셜 미디어 로그인을 통한 사용자 인증을 추가하는 방법은?

Authlib는 파이썬에서 사용자 인증과 관련된 작업을 더욱 쉽게 처리할 수 있도록 도와주는 라이브러리입니다. 이번 포스트에서는 Authlib를 사용하여 소셜 미디어 로그인을 통해 사용자 인증을 추가하는 방법에 대해 알아보겠습니다.

1. Authlib 설치하기

Authlib를 사용하기 위해서는 먼저 패키지를 설치해야 합니다. 아래의 명령어를 사용하여 Authlib를 설치합니다.

pip install authlib

2. 소셜 미디어 애플리케이션 등록하기

소셜 미디어 로그인을 사용하기 위해서는 해당 소셜 미디어 플랫폼에서 애플리케이션을 등록해야 합니다. 예를 들어, 페이스북 로그인을 사용할 경우 페이스북 개발자 포털에서 애플리케이션을 등록해야 합니다. 등록을 완료하면 애플리케이션에 대한 클라이언트 ID와 시크릿 키를 받을 수 있습니다.

3. Flask 애플리케이션 생성하기

Authlib를 사용하여 Flask 애플리케이션에 소셜 미디어 로그인을 추가하려면 다음과 같은 단계를 따라야 합니다.

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)
oauth.register(
    name='facebook',
    client_id='YOUR_CLIENT_ID',
    client_secret='YOUR_CLIENT_SECRET',
    access_token_url='https://graph.facebook.com/v2.9/oauth/access_token',
    authorize_url='https://graph.facebook.com/v2.9/oauth/authorize',
    api_base_url='https://graph.facebook.com',
    client_kwargs={'scope': 'email'}
)

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

@app.route('/authorize')
def authorize():
    token = oauth.facebook.authorize_access_token()
    user = oauth.facebook.parse_id_token(token)
    # 사용자 정보를 이용하여 필요한 작업 수행
    return redirect('/')

if __name__ == '__main__':
    app.run()

위의 코드에서 YOUR_SECRET_KEY, YOUR_CLIENT_ID, YOUR_CLIENT_SECRET에는 애플리케이션 등록을 위해 받은 값들을 넣어주어야 합니다. 위의 코드는 페이스북 로그인을 예로 들었지만, 다른 소셜 미디어 플랫폼을 사용하려면 해당 플랫폼의 OAuth 코드와 URL을 사용해야 합니다.

위의 코드에서는 /login 경로로 접근하면 소셜 미디어 인증을 위한 경로로 리다이렉트되며, /authorize 경로로 접근하면 로그인 인증이 완료된 후 필요한 작업을 수행한 뒤, 홈페이지로 리다이렉트됩니다.

4. 템플릿에서 로그인 버튼 추가하기

Flask 애플리케이션의 템플릿에서 로그인 버튼을 추가하기 위해서는 다음과 같이 코드를 작성해야 합니다.


<a href="{{ url_for('login') }}">소셜 미디어 로그인</a>

위의 코드에서 url_for('login')/login 경로에 대한 링크를 생성합니다. 이를 클릭하면 소셜 미디어 로그인 페이지로 이동합니다.

마치며

이번 포스트에서는 Authlib를 사용하여 Flask 애플리케이션에 소셜 미디어 로그인을 추가하는 방법에 대해 알아보았습니다. Authlib를 사용하면 사용자 인증 구현이 더욱 간편해지므로, 필요에 따라 다양한 소셜 미디어 플랫폼의 로그인을 도입해 볼 수 있습니다.

더 자세한 정보를 알고 싶다면 Authlib 공식 문서를 참고하세요.