[python] Flask와 함께하는 소셜 로그인 구현하기

본 포스트에서는 Flask를 사용하여 소셜 로그인을 구현하는 방법에 대해 알아보겠습니다. 소셜 로그인은 사용자가 다른 웹사이트의 자격 증명을 사용하여 로그인할 수 있는 기능을 말합니다. 예를 들어, Google, Facebook 또는 GitHub 계정으로 로그인할 수 있습니다.

필요한 도구

소셜 로그인을 구현하기 위해 Flask-Dance 라이브러리를 사용할 것입니다. Flask-Dance는 OAuth를 사용하여 소셜 로그인을 지원하는 Flask 어플리케이션을 쉽게 구현할 수 있도록 도와줍니다.

구현 단계

1. 소셜 애플리케이션 등록

먼저, 각각의 소셜 서비스 제공업체(Google, Facebook, GitHub 등)에서 소셜 로그인용 애플리케이션을 등록해야 합니다. 등록 후에는 클라이언트 ID와 시크릿 키를 발급받을 수 있으며, 이 정보들은 추후 Flask 어플리케이션에서 사용합니다.

2. Flask-Dance 설정

Flask-Dance를 사용하기 위해 Flask 어플리케이션에 해당 모듈을 추가하고, 각 소셜 서비스 제공업체의 정보를 설정 파일에 저장합니다.

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

app = Flask(__name__)
app.secret_key = "supersecretkey"

blueprint = make_google_blueprint(
    client_id="myclientid",
    client_secret="myclientsecret",
)
app.register_blueprint(blueprint, url_prefix="/login")

app.config["GOOGLE_OAUTH_CLIENT_ID"] = "myclientid"
app.config["GOOGLE_OAUTH_CLIENT_SECRET"] = "myclientsecret"

3. 소셜 로그인 라우트 생성

로그인 버튼을 만들고 사용자가 클릭할 경우 해당 소셜 로그인을 수행하는 라우트를 생성합니다.

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

4. 로그아웃 지원

마지막으로, 소셜 로그인 기능을 사용한 후에는 사용자가 로그아웃할 수 있는 기능을 구현해야 합니다.

@app.route("/logout")
def logout():
    logout_user()
    return redirect(url_for("index"))

결론

이제 Flask와 Flask-Dance를 사용하여 소셜 로그인을 구현하는 방법에 대해 알아보았습니다. 소셜 로그인은 사용자 경험을 향상시키고, 사용자들이 사이트에 쉽게 로그인할 수 있게 도와줄 수 있는 강력한 도구입니다. Flask-Dance를 사용하면 이러한 기능을 쉽게 구현할 수 있습니다.

참고 자료

Flask-Dance는 많은 소셜 서비스 제공업체와 호환되며, 자세한 설정 방법은 공식 문서 및 GitHub 저장소에서 확인할 수 있습니다.

Happy coding with Flask!