파이썬과 JWT를 이용한 소셜 로그인 기능 구현 방법
소개
소셜 로그인은 사용자가 기존 계정 대신 소셜 미디어 계정을 사용하여 로그인하는 기능입니다. 이는 사용자 경험 및 편의성을 개선하고, 회원가입 절차를 간소화하는 데 도움이 됩니다. 이번 포스트에서는 파이썬과 JWT를 이용하여 소셜 로그인 기능을 구현하는 방법에 대해 알아보겠습니다.
사전 준비
- 파이썬 설치하기: 파이썬 공식 웹사이트에서 최신 버전의 파이썬을 다운로드하여 설치합니다.
- Flask 설치하기: 파이썬 패키지 관리자인 pip를 이용하여 Flask를 설치합니다.
pip install flask명령어를 터미널에서 실행합니다. - 소셜 미디어 앱 등록하기: 각각의 소셜 미디어 플랫폼(예: Facebook, Google)에서 애플리케이션을 등록하고, 클라이언트 ID와 클라이언트 시크릿을 발급받아야 합니다.
소셜 로그인 기능 구현하기
1. 프로젝트 설정하기
먼저 Flask 프로젝트를 생성하고, 필요한 라이브러리를 설치합니다. 다음 코드를 터미널에 입력하여 시작합니다:
$ mkdir social-login
$ cd social-login
$ python -m venv venv
$ source venv/bin/activate
$ pip install Flask flask_jwt_extended requests
2. Flask 애플리케이션 생성하기
다음과 같이 app.py 파일을 생성하고, Flask 애플리케이션을 설정합니다:
from flask import Flask, request, redirect
from flask_jwt_extended import JWTManager, create_access_token
import requests
app = Flask(__name__)
app.config["SECRET_KEY"] = "YOUR-SECRET-KEY"
app.config["JWT_SECRET_KEY"] = "YOUR-JWT-SECRET-KEY"
jwt = JWTManager(app)
# 소셜 미디어 로그인 콜백 처리
@app.route("/callback")
def callback():
code = request.args.get("code")
# 소셜 미디어로부터 액세스 토큰 요청
response = requests.post("SOCIAL-MEDIA-TOKEN-URL", data={
"client_id": "YOUR-CLIENT-ID",
"client_secret": "YOUR-CLIENT-SECRET",
"code": code
})
access_token = response.json().get("access_token")
# 액세스 토큰을 사용하여 사용자 정보 요청
user_info = requests.get("SOCIAL-MEDIA-USER-INFO-URL", headers={
"Authorization": f"Bearer {access_token}"
}).json()
# JWT 생성
jwt_token = create_access_token(identity=user_info.get("id"))
# 로그인 성공 후 리다이렉트
return redirect(f"/success?jwt={jwt_token}")
3. 소셜 미디어 앱 등록 정보 설정하기
app.py 파일에서 다음 부분을 수정하여 소셜 미디어 앱 등록 정보를 설정합니다:
app.config["SECRET_KEY"] = "YOUR-SECRET-KEY"
app.config["JWT_SECRET_KEY"] = "YOUR-JWT-SECRET-KEY"
4. 소셜 미디어 로그인 버튼 추가하기
로그인을 진행할 웹 페이지에 소셜 미디어 로그인 버튼을 추가합니다:
<a href="SOCIAL-MEDIA-AUTHORIZE-URL" class="btn social-login-btn">소셜 미디어 로그인</a>
5. 로그인 성공 페이지 생성하기
로그인이 성공한 후, JWT 토큰을 받아오는 성공 페이지를 생성합니다. app.py 파일에 다음 코드를 추가합니다:
@app.route("/success")
def success():
jwt_token = request.args.get("jwt")
return f"로그인 성공!<br>JWT 토큰: {jwt_token}"
6. 애플리케이션 실행하기
터미널에서 다음 명령어를 실행하여 애플리케이션을 실행합니다:
$ python app.py
웹 브라우저에서 http://localhost:5000으로 접속하여 소셜 미디어 로그인 버튼을 클릭합니다. 정상적으로 로그인이 완료되면 로그인 성공 페이지가 나타나며, JWT 토큰이 표시됩니다.
결론
파이썬과 JWT를 이용한 소셜 로그인 기능을 구현하는 방법에 대해 알아보았습니다. 이를 통해 웹 애플리케이션에 소셜 로그인 기능을 손쉽게 추가할 수 있습니다. 보안을 위해 소셜 미디어 앱 등록 정보를 안전하게 관리하고, JWT를 적절히 활용하여 인증과 권한 부여를 구현하는 것이 중요합니다. #프로그래밍 #파이썬