파이썬과 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를 적절히 활용하여 인증과 권한 부여를 구현하는 것이 중요합니다. #프로그래밍 #파이썬