- 46
- 67
FlaskDiscordAuth | GitHub
Python библиотека для простой интеграции аутентификации Discord OAuth2 в приложения Flask.
Эта библиотека предоставляет удобный способ аутентификации пользователей через Discord, получения информации об аккаунте, управления серверами и защиты маршрутов с минимальной конфигурацией.
Ключевые особенности
- Простая интеграция: Минимальная настройка для начала работы
- Защита маршрутов: Декораторы для проверки аутентификации и прав на серверах Discord
- Расширенная информация: Получение аватара, баннера и других данных аккаунта
- Управление сессией: Автоматическое сохранение токенов и scope
- Обновление токенов: Поддержка обновления access token через refresh token
Установка
Установите библиотеку через pip:
Bash:
pip install FlaskDiscordAuth
Базовое использование
Python:
from flask import Flask, redirect, url_for, session, request
from FlaskDiscordAuth.discord_auth import DiscordAuth
app = Flask(__name__)
app.secret_key = 'your_secret_key'
# Настройки Discord
CLIENT_ID = 'your_client_id'
CLIENT_SECRET = 'your_client_secret'
REDIRECT_URI = 'http://127.0.0.1:5000/callback'
discord_auth = DiscordAuth(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI)
@app.route('/')
def home():
if 'user' in session:
return f"Привет, {session['user']['username']}!"
return 'Добро пожаловать! <a href="/login">Войти через Discord</a>'
@app.route('/login')
def login():
return redirect(discord_auth.get_login_url())
@app.route('/callback')
def callback():
code = request.args.get('code')
token_data = discord_auth.get_token(code)
session['access_token'] = token_data['access_token']
session['user'] = discord_auth.get_user_info(session['access_token'])
return redirect(url_for('home'))
if __name__ == '__main__':
app.run(debug=True)
Защита маршрутов
Python:
@app.route('/profile')
@discord_auth.login_required
def profile():
return f"Профиль пользователя {session['user']['username']}"
@app.route('/moderator')
@discord_auth.guilds_required('1234567890')
def moderator_panel():
return "Панель модератора"
Расширенные возможности
Получение серверов пользователя:
Python:
guilds = discord_auth.get_user_guilds(access_token)
Динамические scopes:
Python:
redirect(discord_auth.get_login_url(scope='identify email guilds'))
Получение баннера и аватара:
Python:
banner_url = f"https://cdn.discordapp.com/banners/{user_info['id']}/{user_info['banner']}.png"
avatar_url = f"https://cdn.discordapp.com/avatars/{user_info['id']}/{user_info['avatar']}.png"
Документация
- Репозиторий
- Официальная документация: Полное руководство по использованию библиотеки.