#
FastAPI
from fastapi import FastAPI, Response
from fastapi.responses import RedirectResponse
from pydantic import BaseModel
from discord_oauth2 import DiscordAuth
client_id = "id"
client_secret = "secret"
callback_url = "url"
discord_auth = DiscordAuth(client_id, client_secret, callback_url)
app = FastAPI()
@app.get('/')
def home():
return {"message": "api"}
@app.get('/login', response_class=RedirectResponse)
def home():
login_url = discord_auth.login()
return login_url
@app.get('/callback')
def callback(code: str):
tokens = discord_auth.get_tokens(code)
return tokens
class RefreshToken(BaseModel):
refresh_token: str
@app.post('/refresh_token')
def refresh_token(refresh_token: RefreshToken):
token = discord_auth.refresh_token(refresh_token.refresh_token)
return token
class AccessToken(BaseModel):
access_token: str
@app.post('/user')
def user(access_token: AccessToken):
user_data = discord_auth.get_user_data_from_token(access_token.access_token)
return user_data