示例#1
0
import logging
import pendulum

from fastapi import APIRouter, Request
from starlette.config import Config
from authlib.integrations.starlette_client import OAuth

from config import Settings

log = logging.getLogger(__name__)

router = APIRouter()

settings = Settings()
conf = Config(environ=settings.dict())
oauth = OAuth(conf)

oauth.register(name='google',
               server_metadata_url=settings.GOOGLE_CONF_URL,
               client_kwargs={'scope': 'openid email profile'})


@router.get('/signin')
async def login(request: Request):
    if request.session.get('user') is not None:
        return
    redirect_uri = settings.GOOGLE_REDIRECT_URL
    log.info('Preparing oauth with redirect_uri', redirect_uri)
    return await oauth.google.authorize_redirect(request, redirect_uri)