| fakelag28 |
25.08.2025 15:17 |
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
'Добро пожаловать! Войти через Discord'
@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"
Документация
- Репозиторий
- Официальная документация: Полное руководство по использованию библиотеки.
|