Nestipy pakcage for social network authentification
Project description
Description
Nestipy is a Python framework built on top of FastAPI that follows the modular architecture of NestJS
Under the hood, Nestipy makes use of FastAPI, but also provides compatibility with a wide range of other libraries, like Blacksheep, allowing for easy use of the myriad of third-party plugins which are available.
Getting started
pip install nestipy-socialite
app_module.py
import os
from dotenv import load_dotenv
from nestipy.common import Module
from app_controller import AppController
from app_service import AppService
from nestipy_socialite import SocialiteModule, SocialiteConfig
from nestipy_socialite import GoogleOAuthProvider, FacebookOAuthProvider
load_dotenv()
@Module(
imports=[
SocialiteModule.register(
SocialiteConfig(
providers={
"google": GoogleOAuthProvider(
client_id=os.environ.get("GOOGLE_CLIENT_ID"),
client_secret=os.environ.get("GOOGLE_CLIENT_SECRET"),
redirect_uri=os.environ.get("GOOGLE_REDIRECT_URI")
),
"facebook": FacebookOAuthProvider(
client_id=os.environ.get("FACEBOOK_CLIENT_ID"),
client_secret=os.environ.get("FACEBOOK_CLIENT_SECRET"),
redirect_uri=os.environ.get("FACEBOOK_REDIRECT_URI")
)
}
)
)
],
controllers=[AppController],
providers=[AppService]
)
class AppModule:
...
app_controller.py
from typing import Annotated
from nestipy.common import Controller, Get, Post, Response, Request
from nestipy.ioc import Inject, Param, Res, Req
from nestipy_socialite import SocialiteService
@Controller('auth')
class AppController:
socialite: Annotated[SocialiteService, Inject()]
@Get('/{driver}/login')
async def get(self, driver: Annotated[str, Param('driver')], res: Annotated[Response, Res()]) -> Response:
redirect_url = self.socialite.driver(driver).get_authorization_url()
print(redirect_url)
return await res.redirect(redirect_url)
@Get('/{driver}/callback')
async def callback(
self,
req: Annotated[Request, Req()],
res: Annotated[Response, Res()],
driver: Annotated[str, Param('driver')],
) -> dict:
code = req.query_params.get('code')
return self.socialite.driver(driver).user(code=code)
Support
Nestipy is an MIT-licensed open source project. It can grow thanks to the sponsors and support from the amazing backers. If you'd like to join them, please [read more here].
Stay in touch
- Author - Tsiresy Mila
License
Nestipy is MIT licensed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters