Интеграция Web3Auth для социального логина в мобильном криптоприложении
Web3Auth решает классическую проблему крипто-onboarding'а: пользователь хочет войти через Google или Apple ID, но при этом получить некастодиальный кошелёк. Seed-фразу никто не запоминает — её теряют. Web3Auth распределяет части ключа через MPC (Multi-Party Computation), не требуя от пользователя хранить мнемонику.
Как работает архитектура ключей
Web3Auth разделяет приватный ключ на части через протокол tKey (threshold key). При логине через Google часть ключа хранится в сети узлов Torus Network, часть — на устройстве пользователя, часть — в облачном бэкапе (iCloud / Google Drive). Для восстановления нужны минимум 2 из 3 частей — схема 2-of-3.
Пользователь теряет устройство → логинится через Google на новом → ключ восстанавливается. Никакой seed-фразы. Но важно понимать: это не полностью некастодиальное решение — Torus Network держит одну из частей.
Интеграция 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:).
Что может пойти не так
Самая частая проблема — 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 недели. Стоимость рассчитывается индивидуально.







