/
cookit
/
CookItBackend
Обзор
Документация
Войти
/
cookit
/
CookItBackend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
auth.py
36 строк
1 KB
alpa26
add google auth
16 окт 2025, 21:40
16 окт 2025, 21:40
cff4cfd
Код
Авторство
О чём код?
from fastapi import APIRouter, Request, Depends from starlette.responses import RedirectResponse from authlib.integrations.starlette_client import OAuth from sqlalchemy.orm import Session import os import crud from database import get_db router = APIRouter(prefix="/auth", tags=["auth"]) oauth = OAuth() oauth.register( name="google", client_id=os.getenv("GOOGLE_CLIENT_ID"), client_secret=os.getenv("GOOGLE_CLIENT_SECRET"), server_metadata_url="https://accounts.google.com/.well-known/openid-configuration", client_kwargs={"scope": "openid email profile"}, ) @router.get("/login") async def login(request: Request): redirect_uri = request.url_for("auth_callback") return await oauth.google.authorize_redirect(request, redirect_uri) @router.get("/callback") async def auth_callback(request: Request, db: Session = Depends(get_db)): token = await oauth.google.authorize_access_token(request) user_info = token["userinfo"] crud.create_user( db, google_id=user_info["sub"], email=user_info["email"], name=user_info["name"], avatar_url=user_info["picture"], ) return RedirectResponse(url="/")