Flask를 활용한 OAuth와 소셜 로그인 통합 방법
Flask는 Python 기반의 경량 웹 프레임워크로, 간단하고 유연한 구조로 인해 많은 개발자들이 애용하고 있습니다. 오늘은 Flask를 활용하여 OAuth를 이용한 사용자 인증과 소셜 로그인 통합 방법을 단계별로 살펴보겠습니다. Google OAuth 2.0을 예제로 사용하지만, 다른 소셜 로그인 서비스에도 쉽게 확장할 수 있습니다.
1. OAuth란 무엇인가?
OAuth는 "Open Authorization"의 약자로, 안전한 사용자 인증을 위해 외부 서비스(예: Google, Facebook, GitHub 등)와 애플리케이션 간의 액세스를 위임하는 표준 프로토콜입니다. OAuth를 사용하면 사용자가 애플리케이션에 비밀번호를 제공하지 않고도 인증할 수 있습니다.
2. Flask 애플리케이션 준비
먼저 Flask 프로젝트를 초기화하고 필요한 라이브러리를 설치합니다.
설치 명령어
pip install flask flask-dance
flask-dance
는 Flask 애플리케이션에 OAuth 기능을 쉽게 통합할 수 있도록 도와주는 라이브러리입니다.
3. Google OAuth 설정
Google API 콘솔에서 애플리케이션을 등록하고 클라이언트 ID와 클라이언트 Secret을 얻습니다.
- Google Cloud Console에 로그인합니다.
- 프로젝트를 생성하거나 기존 프로젝트를 선택합니다.
- API 및 서비스 > 사용자 인증 정보로 이동합니다.
- 사용자 인증 정보 만들기 > OAuth 클라이언트 ID를 선택합니다.
- 애플리케이션 유형으로 "웹 애플리케이션"을 선택하고 승인된 리디렉션 URI를 설정합니다. 예:
http://localhost:5000/login/google/authorized
- 클라이언트 ID와 Secret을 복사합니다.
4. Flask 애플리케이션 구현
프로젝트 디렉토리 구조
my_flask_app/
├── app.py
└── requirements.txt
코드 구현
아래는 Flask와 Google OAuth 2.0을 통합하는 예제입니다.
from flask import Flask, redirect, url_for, session
from flask_dance.contrib.google import make_google_blueprint, google
import os
app = Flask(__name__)
app.secret_key = os.getenv("FLASK_SECRET_KEY", "supersecretkey")
# Google OAuth 설정
google_blueprint = make_google_blueprint(
client_id=os.getenv("GOOGLE_CLIENT_ID"),
client_secret=os.getenv("GOOGLE_CLIENT_SECRET"),
redirect_to="google_login"
)
app.register_blueprint(google_blueprint, url_prefix="/login")
@app.route("/")
def index():
return "<h1>Flask OAuth Example</h1><a href='/login/google'>Google로 로그인</a>"
@app.route("/login/google")
def login():
if not google.authorized:
return redirect(url_for("google.login"))
resp = google.get("/oauth2/v1/userinfo")
assert resp.ok, resp.text
user_info = resp.json()
return f"<h1>환영합니다, {user_info['name']}!</h1><p>이메일: {user_info['email']}</p>"
if __name__ == "__main__":
app.run(debug=True)
환경 변수 설정
위 코드를 실행하기 전에 .env
파일에 다음 환경 변수를 설정합니다.
FLASK_SECRET_KEY=your_secret_key
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
.env
파일은 python-dotenv 라이브러리를 이용해 관리할 수 있습니다.
5. 실행 및 테스트
- Flask 애플리케이션을 실행합니다.
python app.py
- 브라우저에서
http://localhost:5000
으로 접속합니다. - "Google로 로그인" 링크를 클릭하고 Google 계정으로 인증합니다.
- 인증이 성공하면 사용자 이름과 이메일이 표시됩니다.
6. 기타 소셜 로그인 통합
flask-dance
는 Google뿐만 아니라 Facebook, GitHub, Twitter 등 다양한 플랫폼의 OAuth 통합을 지원합니다. 다른 플랫폼을 통합하려면 해당 플랫폼의 API 콘솔에서 클라이언트 ID와 Secret을 얻고, make_google_blueprint
대신 적절한 블루프린트를 사용하면 됩니다. 예: make_facebook_blueprint
, make_github_blueprint
.
7. 마무리
이번 포스팅에서는 Flask를 활용하여 OAuth와 소셜 로그인을 통합하는 방법을 살펴보았습니다. 실제 서비스에 적용할 때는 보안과 사용자 데이터를 철저히 관리하는 것이 중요합니다. 이를 위해 HTTPS를 사용하고, OAuth 토큰을 안전하게 저장하는 방법도 고려해야 합니다.
'Python > Python Flask' 카테고리의 다른 글
Flask-Mail을 사용하여 이메일 전송하기 (0) | 2025.09.16 |
---|---|
Flask-Admin으로 관리 페이지 만들기 (0) | 2025.09.15 |
Flask에서 사용자 인증: 세션 관리 및 쿠키 사용 (0) | 2025.09.11 |
Flask 사용자 인증: Flask-Login으로 사용자 인증 구현하기 (0) | 2025.09.10 |
Flask로 RESTful API와 JSON 데이터 처리하기 (0) | 2025.09.09 |