Інтеграція Web3Auth для соціального входу в крипто-мобільному додатку
Web3Auth вирішує класичну проблему крипто-onboarding'у: користувач хоче увійти через Google або Apple ID, але отримати некастодіальний гаманець. Мнемоніку ніхто не запам'ятовує — її втрачають. Web3Auth розділяє частини ключа через MPC (Multi-Party Computation), без потреби у мнемоніці.
Як працює архітектура ключів
Web3Auth розділяє приватний ключ через протокол tKey (threshold key). При логіні через Google частину ключа зберігає Torus Network, частину — на пристрої користувача, частину — в хмарному бекапі (iCloud / Google Drive). Для відновлення потрібні мінімум 2 з 3 частин — схема 2-of-3.
Користувач втрачає пристрій → логінється через Google на новому → ключ відновлюється. Жодної мнемоніки. Важливо розуміти: це не повністю некастодіальне рішення — 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. Для 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 тижні. Ціна розраховується індивідуально.







