Troubleshooting
Решение частых проблем и ошибок при работе с AdQuest Widget.
Проверьте загрузку скриптов
Убедитесь, что скрипты загружены правильно:
// Проверка в консоли браузераconsole.log(typeof window.AdQuest); // Должно быть 'object'Если undefined, проверьте:
- Правильность URL скрипта
- Отсутствие блокировки Content Security Policy
- Отсутствие блокировки AdBlock
Проверьте Site Key
// Неправильно - Site Key не указанAdQuest.init({ container: document.getElementById('adquest-captcha')});
// ПравильноAdQuest.init({ siteKey: 'YOUR_SITE_KEY', container: document.getElementById('adquest-captcha')});Проверьте контейнер
const container = document.getElementById('adquest-captcha');console.log(container); // Не должно быть null
if (!container) { console.error('Контейнер не найден!');}Причины:
- Неверный Site Key
- Site Key для другого домена
- Использование production ключа на localhost
Решение:
// Используйте тестовый ключ для разработкиconst SITE_KEY = process.env.NODE_ENV === 'production' ? 'prod_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' : 'test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
AdQuest.init({ siteKey: SITE_KEY, container: document.getElementById('adquest-captcha')});Проверьте время жизни токена
Токены действительны 1 час по умолчанию:
// Увеличьте время жизни токенаAdQuest.init({ siteKey: 'YOUR_SITE_KEY', container: document.getElementById('adquest-captcha'), tokenTTL: 7200 // 2 часа});Проверьте одноразовое использование
Каждый токен можно использовать только один раз:
// Неправильно - повторное использование токенаconst token = AdQuest.getToken();await verifyToken(token); // Первая проверка - OKawait verifyToken(token); // Вторая проверка - FAIL
// Правильно - получите новый токенAdQuest.reset();// Пользователь проходит проверку зановоДобавьте домен в dashboard
- Откройте Dashboard ↗
- Перейдите в настройки Site Key
- Добавьте ваш домен в список разрешенных
Проверьте apiBaseURL
// Убедитесь, что используете правильный URLAdQuest.init({ siteKey: 'YOUR_SITE_KEY', container: document.getElementById('adquest-captcha'), apiBaseURL: 'https://api.ad-quest.ru' // Правильный URL});// Добавьте в консоль браузераlocalStorage.setItem('adquest_debug', 'true');
// Перезагрузите страницуlocation.reload();Вы увидите подробные логи в консоли:
[AdQuest] Initializing widget...[AdQuest] Site Key: YOUR_SITE_KEY[AdQuest] Mode: advertisement[AdQuest] Loading advertisement...[AdQuest] Token received: eyJ...// В консоли браузераconsole.log(AdQuest.getToken()); // Текущий токен или nullAdQuest.init({ siteKey: 'YOUR_SITE_KEY', container: document.getElementById('adquest-captcha'),
onLoad: () => { console.log('✓ Виджет загружен'); },
onSuccess: (token) => { console.log('✓ Токен получен:', token); },
onError: (error) => { console.error('✗ Ошибка:', error); },
onExpire: () => { console.warn('⚠ Токен истек'); }});Загружайте виджет только когда он нужен:
// Загрузка при клике на формуdocument.getElementById('loginForm').addEventListener('focus', () => { if (!window.AdQuest) { const script = document.createElement('script'); script.src = 'https://cdn.ad-quest.ru/widget/v1/adquest-widget.min.js'; script.async = true; document.body.appendChild(script); }}, { once: true });Используйте <link rel="preload"> для ускорения загрузки:
<link rel="preload" href="https://cdn.ad-quest.ru/widget/v1/adquest-widget.min.js" as="script"><link rel="preload" href="https://cdn.ad-quest.ru/widget/v1/adquest-widget.min.css" as="style">Добавьте в CSP:
<meta http-equiv="Content-Security-Policy" content=" script-src 'self' https://cdn.ad-quest.ru; connect-src 'self' https://api.ad-quest.ru; style-src 'self' https://cdn.ad-quest.ru; ">Никогда не вставляйте токен в HTML:
// Неправильно - уязвимость XSSdocument.getElementById('token').innerHTML = token;
// Правильно - отправьте на серверfetch('/api/verify', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token })});| Действие | Лимит | Период |
|---|---|---|
| Инициализация виджета | 10 | 1 минута |
| Проверка токена | 100 | 1 минута |
| Получение рекламы | 50 | 1 минута |
При превышении лимита вы получите ошибку RATE_LIMIT_EXCEEDED.
Токены имеют размер ~500-1000 байт. Учитывайте это при передаче в URL или cookies.
| Браузер | Минимальная версия |
|---|---|
| Chrome | 90+ |
| Firefox | 88+ |
| Safari | 14+ |
| Edge | 90+ |
Если проблема не решена:
- Проверьте API документацию
- Изучите примеры интеграции
- Напишите в поддержку: support@ad-quest.ru
- Откройте issue на GitHub
- Конфигурация - настройка виджета
- API Reference - полная документация API
- Примеры интеграции - готовые решения