Інтеграція Web3Auth для соціального логіну в мобільному криптододатку
Клієнти часто приходять із запитом: «Хочемо, щоб користувачі заходили в додаток через Google, але при цьому отримували справжній некастодіальний гаманець». Seed-фраза — найслабша ланка: користувачі її втрачають, забувають, не записують. Ми пропонуємо інтеграцію Web3Auth — розподілене зберігання ключів через Multi-Party Computation, яке усуває цей бар'єр, не жертвуючи безпекою. За нашими плечима понад 5 років досвіду в блокчейн-розробці та 20+ впроваджень MPC-рішень.
Web3Auth вирішує класичну проблему крипто-onboarding'у: користувач хоче увійти через Google або Apple ID, але при цьому отримати некастодіальний гаманець. Seed-фразу ніхто не запам'ятовує — її втрачають. Web3Auth розподіляє частини ключа через MPC, не вимагаючи від користувача зберігати мнемоніку.
Як працює архітектура ключів
Web3Auth розділяє приватний ключ на частини через протокол tKey (threshold key). При логіні через Google частина ключа зберігається в мережі вузлів Torus Network, частина — на пристрої користувача, частина — у хмарному бекапі (iCloud / Google Drive). Для відновлення потрібні мінімум 2 з 3 частин — схема 2-of-3.
Користувач втрачає пристрій → логіниться через Google на новому → ключ відновлюється. Жодної seed-фрази. Але важливо розуміти: це не повністю некастодіальне рішення — Torus Network тримає одну з частин.
Чому Web3Auth безпечніший за seed-фразу?
Seed-фраза — єдина точка відмови: один скомпрометований файл або фішингова сторінка дають зловмиснику повний доступ. У MPC-моделі Web3Auth зловмиснику потрібно одночасно скомпрометувати два з трьох сховищ (пристрій, iCloud, Torus). Порогова схема ECDSA гарантує, що жоден вузол Torus не може підписати транзакцію поодинці. Крім того, приватний ключ реконструюється лише в пам'яті пристрою і не зберігається на диск — це знижує ризик при компрометації ОС.
Як інтегрувати Web3Auth з підтримкою MFA?
Web3Auth дозволяє задати рівень MFA при логіні. Параметр mfaLevel приймає значення "optional", "mandatory" або "off". При "mandatory" користувач після першого входу через Google буде змушений налаштувати другий фактор (наприклад, резервний пристрій або біометрію). Для криптододатків з реальними активами ми рекомендуємо "optional" — користувач може пропустити налаштування зараз, але ми нагадуємо про нього через push-сповіщення.
Інтеграція SDK
Web3Auth надає web3auth-react-native-sdk для React Native та нативні обгортки для iOS/Android.
// React Native import { Web3Auth, LOGIN_PROVIDER } from "@web3auth/react-native-sdk"; const web3auth = new Web3Auth(WebBrowser, { clientId: "YOUR_CLIENT_ID", network: "mainnet", redirectUrl: "your-app-scheme://auth", loginConfig: { google: { verifier: "your-google-verifier", typeOfLogin: LOGIN_PROVIDER.GOOGLE, clientId: "YOUR_GOOGLE_CLIENT_ID", }, }, }); const login = async () => { const state = await web3auth.login({ loginProvider: LOGIN_PROVIDER.GOOGLE, mfaLevel: "optional", }); const privateKey = web3auth.privKey; // hex-строка // Створюємо гаманець із приватного ключа const wallet = new ethers.Wallet(privateKey); }; Після отримання privKey створюємо гаманець через ethers.js або viem. Приватний ключ не зберігається на пристрої напряму — він реконструюється при кожній сесії і живе тільки в пам'яті.
Налаштування Verifier в Dashboard
Перед інтеграцією потрібно створити Custom Verifier у Web3Auth Dashboard. Для Google — OAuth 2.0 Client ID з Google Cloud Console, verifier name. Для Apple Sign In — додаткове налаштування через JWT-верифікатор, оскільки Apple використовує нестандартний OIDC.
Deep Link / Universal Link налаштовується для redirect після OAuth. На Android — Intent Filter у AndroidManifest.xml:
<intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="yourapp" android:host="auth" /> </intent-filter> На iOS — URL Scheme у Info.plist + обробка в AppDelegate.application(_:open:options:).
Порівняння методів входу в криптогаманець
| Метод | Зручність для користувача | Безпека | Відновлення доступу |
|---|---|---|---|
| Seed-фраза (12/24 слів) | Низька (потрібен запис) | Залежить від зберігання | Можливе з seed-фразою |
| Web3Auth (Google/Apple) | Висока (1 клік) | MPC, 2-of-3, ключ у пам'яті | Автоматичне через соцлогін |
| Апаратний гаманець (Ledger) | Низька (пристрій) | Максимальна (офлайн) | Потрібна сид-фраза або новий девайс |
Що входить в інтеграцію
Ми виконуємо інтеграцію Web3Auth під ключ. До складу робіт входить:
- Створення Custom Verifier у Web3Auth Dashboard для Google та Apple
- Налаштування OAuth-клієнтів у Google Cloud Console та Apple Developer
- Інтеграція SDK у React Native / iOS / Android
- Конфігурація Deep Link та Universal Link
- Тестування на обох оточеннях (dev/prod) з різними Client ID
- Налаштування MFA (optional/mandatory) та білінгових систем (StoreKit 2 / Billing 6)
- Документація по експлуатації та навчання вашої команди
- Підтримка протягом 30 днів після здачі
Що може піти не так
Найчастіша проблема — redirect_uri_mismatch. OAuth-провайдер (Google, Apple) відхиляє redirect на URL схему додатка, якщо він не доданий до списку дозволених у консолі провайдера. Перевірити потрібно обидва оточення: development і production — у них різні Client ID та різні redirect URI.
Другий момент — mfaLevel. Web3Auth підтримує опціональний другий фактор через пристрій. Якщо mfaLevel = "mandatory", користувач буде змушений налаштувати резервний пристрій при першому логіні. Для криптододатків з реальними активами — рекомендуємо "optional" з подальшим prompting.
Інтеграція Web3Auth із соціальним логіном (Google + Apple) займає від 1 до 3 тижнів. Оцінимо ваш проект безкоштовно — зв'яжіться з нами, щоб обговорити деталі.







