[파이썬] Flask를 이용한 소셜 미디어 인증

소셜 미디어 인증(Social Media Authentication)은 사용자가 다른 웹 서비스에 새로운 계정을 생성하지 않고, 소셜 미디어 서비스 계정을 사용하여 간편하게 로그인 및 인증할 수 있는 기능을 제공합니다. Flask는 파이썬을 기반으로 한 웹 프레임워크로, 소셜 미디어 인증을 쉽게 구현할 수 있도록 도와줍니다.

필요한 패키지 설치하기

먼저 소셜 미디어 인증을 구현하기 위해 필요한 패키지들을 설치해야 합니다. Flask-Dance는 Flask 확장 패키지로, 다양한 소셜 미디어 서비스에 대한 인증 기능을 제공합니다.

pip install Flask-Dance

구글(Google) 소셜 미디어 인증 구현하기

이제 구글 소셜 미디어 인증을 Flask 애플리케이션에 구현해보겠습니다.

1. 구글 API 콘솔에서 인증 정보 생성하기

먼저 Google Cloud Console에 접속하여 새로운 프로젝트를 생성합니다. 그런 다음, 생성한 프로젝트에서 “사용자 인증 정보”를 생성합니다.

2. Flask 애플리케이션에 인증 정보 설정하기

Flask 애플리케이션 코드에서 다음과 같이 구글 소셜 미디어 인증을 위한 설정을 추가합니다.

from flask import Flask
from flask_dance.contrib.google import make_google_blueprint, google

app = Flask(__name__)
app.config['SECRET_KEY'] = 'supersecretkey'
app.config['OAUTHLIB_RELAX_TOKEN_SCOPE'] = True

# Google 소셜 미디어 인증 블루프린트 생성
blueprint = make_google_blueprint(
    client_id="your-client-id",
    client_secret="your-client-secret",
    redirect_url="/google/redirect"
)

app.register_blueprint(blueprint, url_prefix="/login")

@app.route("/")
def index():
    if not google.authorized:
        return redirect(url_for("google.login"))

    resp = google.get("/oauth2/v2/userinfo")
    assert resp.ok, resp.text
    return f"You are {resp.json()['email']} on Google"
    
@app.route("/google/redirect")
def google_redirect():
    if not google.authorized:
        return redirect(url_for("google.login"))

    resp = google.get("/oauth2/v2/userinfo")
    assert resp.ok, resp.text
    return redirect(url_for("index"))

make_google_blueprint 함수를 사용하여 구글 소셜 미디어 인증 블루프린트를 생성합니다. client_idclient_secret은 구글 API 콘솔에서 생성한 사용자 인증 정보에서 얻을 수 있습니다. redirect_url은 구글 로그인 후 리디렉션될 URL을 지정합니다.

3. 애플리케이션 실행하기

Flask 애플리케이션을 실행하고 웹 브라우저에서 http://localhost:5000에 접속합니다. 구글 소셜 미디어 인증을 통해 로그인할 수 있습니다.

이처럼 Flask와 Flask-Dance를 이용하여 소셜 미디어 인증을 구현할 수 있습니다. 다양한 소셜 미디어 서비스에 대한 인증 기능을 제공하는 Flask-Dance는 프로젝트에 사용할 수 있는 다른 소셜 미디어 인증 블루프린트도 제공합니다. Flask를 기반으로 한 웹 서비스를 개발할 때 소셜 미디어 인증을 고려해보세요!