🚀 RoAuth SDK
Мощный JavaScript SDK для простой и безопасной интеграции RoAuth аутентификации
RoAuth SDK - это легкая и удобная библиотека для интеграции авторизации через RoAuth в ваши веб-приложения. Позволяет быстро добавить вход пользователей, управление сессиями и взаимодействие с API без лишней боли.
- 🔐 Безопасная аутентификация с HMAC-SHA256 подписями
- 🎨 Полная кастомизация внешнего вида кнопок
- 🪟 Popup-режим без перезагрузки страницы
- 🌍 Многоязычность (Русский/English)
- 📱 Адаптивный дизайн для всех устройств
- 🛠️ Verbose logging для отладки
- 🔔 Встроенные уведомления для обратной связи
- 🔄 Кросс-браузерная поддержка
<script src="http://auth.roshkam.ru/public/authButton.js"></script><div class="roauth-container"></div>window.RoAuth.createButton({
clientId: 'your-client-id',
redirectUrl: 'https://your-app.com/callback',
permissions: 'email+username'
});<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Мое приложение</title>
</head>
<body>
<div class="roauth-container"></div>
<script src="http://auth.roshkam.ru/public/authButton.js"></script>
<script>
window.RoAuth.createButton({
clientId: 'your-client-id',
redirectUrl: 'https://your-app.com/callback'
});
</script>
</body>
</html># Скачайте SDK файл с GitHub Releases
wget https://github.com/RomanKarb/RoAuth/releases/download/v1.28.1/authButton.js
# Или через curl
curl -O https://github.com/RomanKarb/RoAuth/releases/download/v1.28.1/authButton.jswindow.RoAuth.createButton({
clientId: 'demo-app',
redirectUrl: 'https://demo-app.com/callback',
permissions: 'email+username'
});window.RoAuth.createButton({
clientId: 'styled-app',
redirectUrl: 'https://styled-app.com/callback',
style: {
text: "🚀 Войти через RoAuth",
theme: 'dark',
borderRadius: 8,
fontSize: 18
},
onSuccess: (data) => {
console.log('Успешная авторизация!', data);
}
});window.RoAuth.createButton({
clientId: 'popup-app',
redirectUrl: 'https://popup-app.com/callback',
popup: true,
permissions: 'email+username+profile'
});| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
clientId |
string | ✅ | Идентификатор OAuth-клиента |
redirectUrl |
string | ✅ | URL для перенаправления после авторизации |
permissions |
string | ✅ | Запрашиваемые разрешения (email+username) |
popup |
boolean | ❌ | Включить popup-режим |
lang |
string | ❌ | Установить язык для окна авторизации |
style |
object | ❌ | Настройки внешнего вида |
onSuccess |
function | ❌ | Callback при успешной авторизации |
onError |
function | ❌ | Callback при ошибке |
- 🌞 Light (по умолчанию)
- 🌙 Dark
- 🎨 Custom (свои цвета)
📖 Полная документация содержит:
- Детальное API описание
- Расширенные примеры использования
- Руководство по безопасности
- Troubleshooting
- Changelog
- 🔐 HMAC-SHA256 подписи для защиты от подделок
- 🛡️ CSRF-защита с state параметрами
- 🔒 HTTPS обязательный для production
- ✅ Валидация всех URL и параметров
- Браузеры: Chrome 60+, Firefox 55+, Safari 12+, Edge 79+
- JavaScript: ES6+ поддержка
- Протокол: HTTPS (production)
- API: Web Crypto API
Если у вас возникли проблемы:
- 📖 Проверьте документацию
- 🔍 Включите verbose logging:
window.roAuthVerbose('on') - 💬 Создайте issue
- 📝 Проверьте discussions
Этот проект распространяется под лицензией MIT - см. файл LICENSE для деталей.
Мы приветствуем вклад! Пожалуйста:
- Форкните репозиторий
- Создайте feature branch (
git checkout -b feature/AmazingFeature) - Зафиксируйте изменения (
git commit -m 'Add some AmazingFeature') - Отправьте в branch (
git push origin feature/AmazingFeature) - Откройте Pull Request
- GitHub: https://github.com/RomanKarb/RoAuth
- Issues: https://github.com/RomanKarb/RoAuth/issues
- Discussions: https://github.com/RomanKarb/RoAuth/discussions
- Служба поддержки: https://support.roshkam.ru
- Telegram: https://t.me/roshkam
Разработано с ❤️
🌟 Поставьте звезду если проект вам понравился!
loginиauthorize: максимум 7 запросов за 60 секунд на один IP клиентаvalidateиverify-token: максимум 15 запросов за 60 секунд на один IP клиента
При превышении лимита API возвращает HTTP 429 с JSON:
{
"success": false,
"error": "rate_limit_exceeded",
"message": "rate_limit_exceeded Retry after 42 seconds"
}Дополнительно вызов errorResponse включает количество секунд для повтора в качестве 4-го параметра, где применимо.