Das Onboarding von Benutzern in eine Web3-App schreckt die meisten Menschen immer noch beim ersten Schritt ab. Seed-Phrasen, Browser-Erweiterungen und Gasgebühren verwandeln eine Zwei-Klick-Anmeldung in einen zehnminütigen Kampf. Die Privy API schließt diese Lücke, indem sie jedem neuen Benutzer eine eingebettete Wallet hinter einem vertrauten Login bereitstellt: E-Mail, SMS, Google, Apple oder eine bestehende Wallet wie MetaMask. Sie erhalten einen krypto-nativen Benutzer, ohne jemanden zur Installation einer Browser-Erweiterung aufzufordern.
Privy unterstützt jetzt Wallets für Blackbird, Friend.tech, OpenSea und Tausende anderer Apps, und das Produkt umfasst Ethereum, Solana sowie jede EVM-Kette. Dieser Leitfaden führt Sie durch den gesamten Entwickler-Workflow: Erstellung einer Privy-App, Anbindung des React SDK, Überprüfung von Tokens auf dem Server, Signieren von Transaktionen mit eingebetteten Wallets und Bereitstellung von Webhooks. Wenn Sie auch Optionen wie das Entwickler-Toolkit von MetaMask vergleichen möchten, lassen Sie diese Seite geöffnet und springen Sie hin und her.
TL;DR
- Privy kombiniert eingebettete Wallets mit E-Mail-, SMS-, Social- und externen Wallet-Logins unter einem einzigen SDK.
- Das React SDK stellt die Hooks
PrivyProvider,useLogin,useWalletsundusePrivybereit, um den vollständigen Authentifizierungs- und Signatur-Workflow abzudecken. @privy-io/server-authüberprüft Zugriffstokens auf Ihrem Backend, sodass Sie der Benutzer-ID bei jeder Anfrage vertrauen können.- Wallets unterstützen Ethereum, Solana und andere EVM-Ketten, mit optionaler Exportierbarkeit und Autorisierungssignaturen für Schlüsseloperationen.
- Webhooks werden bei Benutzererstellung, Login und Wallet-Ereignissen ausgelöst, sodass Ihre Datenbank ohne Polling synchron bleibt.
- Die Privy-Richtlinien-Engine fügt MFA, Zulassungslisten und Transaktionsregeln hinzu, ohne Ihren App-Code zu verzweigen.
Was ist die Privy API?
Privy ist eine Plattform für Authentifizierung und Wallet-Infrastruktur. Sie bietet Ihrer App drei Dinge: eine Login-Benutzeroberfläche, eine pro Benutzer bereitgestellte eingebettete Wallet und eine Reihe von REST-Endpunkten für serverseitige Überprüfungen. Die eingebettete Wallet befindet sich in einer sicheren Enklave, sodass Privy den privaten Schlüssel nie sieht und Ihr Backend ebenfalls nicht. Benutzer können ihren Schlüssel später exportieren, wenn sie zu einer Self-Custody-Wallet wechseln möchten; diese Optionalität ist ein wichtiger Bestandteil des Angebots.
Die Plattform berechnet pro monatlich aktiver Wallet, was bedeutet, dass Sie kostenlos einen Prototyp veröffentlichen und die Preise mit wachsender Akzeptanz skalieren können. Der kostenlose Tarif deckt 1.000 monatlich aktive Benutzer ab, Pro beginnt bei 149 $ pro Monat, und Enterprise bietet maßgeschneiderte SLAs.
Authentifizierung und Einrichtung
Beginnen Sie unter privy.io und erstellen Sie eine neue App über das Dashboard. Sie erhalten zwei wichtige Werte:
- App-ID (
clxxxxx...) für das Client SDK - App-Geheimnis für das Server SDK
Legen Sie die erlaubten Login-Methoden fest (E-Mail, SMS, Google, Apple, Farcaster, Wallet), wählen Sie Ihre Standard-Kette und fügen Sie Ihre Domain zur Liste der erlaubten Ursprünge hinzu. Für React installieren Sie das SDK:
npm install @privy-io/react-auth
Umschließen Sie Ihre App mit PrivyProvider:
import { PrivyProvider } from '@privy-io/react-auth';
export default function App({ Component, pageProps }) {
return (
<PrivyProvider
appId={process.env.NEXT_PUBLIC_PRIVY_APP_ID}
config={{
loginMethods: ['email', 'wallet', 'google'],
embeddedWallets: { createOnLogin: 'users-without-wallets' },
defaultChain: { id: 8453 }, // Base
supportedChains: [{ id: 1 }, { id: 8453 }, { id: 137 }],
}}
>
<Component {...pageProps} />
</PrivyProvider>
);
}
Das createOnLogin-Flag stellt eine eingebettete Wallet bereit, wenn sich ein Benutzer zum ersten Mal ohne eine solche anmeldet. Sie steuern die unterstützten Ketten; Solana wird unter einer separaten solanaClusters-Konfiguration verwaltet.
Kern-Endpunkte und SDK-Aufrufe
Das React SDK von Privy handhabt die meisten Abläufe, sodass Sie selten rohe REST-Anfragen tätigen müssen. Dennoch verwenden das Server SDK und die Webhook-Nutzlasten das gleiche Token-Format, daher hilft es, die zugrunde liegende API zu kennen, wenn etwas schiefgeht.
Login auslösen und Benutzerdaten lesen
import { usePrivy, useWallets } from '@privy-io/react-auth';
function LoginButton() {
const { ready, authenticated, login, logout, user } = usePrivy();
const { wallets } = useWallets();
if (!ready) return <p>Loading...</p>;
if (!authenticated) return <button onClick={login}>Sign in</button>;
const embedded = wallets.find((w) => w.walletClientType === 'privy');
return (
<div>
<p>Hi {user.email?.address ?? user.id}</p>
<p>Wallet: {embedded?.address}</p>
<button onClick={logout}>Log out</button>
</div>
);
}
useWallets gibt jede Wallet zurück, die der Benutzer verknüpft hat, und das Feld walletClientType sagt Ihnen, welche davon Privy erstellt hat. Dies ist das Muster, dem Sie für eingebettete Privy Wallets folgen.
Eine Transaktion signieren
const { wallets } = useWallets();
const wallet = wallets.find((w) => w.walletClientType === 'privy');
async function sendTx() {
const provider = await wallet.getEthereumProvider();
const hash = await provider.request({
method: 'eth_sendTransaction',
params: [{
to: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb2',
value: '0x38d7ea4c68000', // 0.001 ETH
}],
});
console.log('tx hash', hash);
}
Für Solana tauschen Sie getEthereumProvider gegen getSolanaProvider aus und übergeben eine serialisierte Transaktion. Wenn Sie Datenzugriffsmuster von Anbietern wie Alchemy widerspiegeln möchten, arbeitet Privy gut mit ihnen zusammen; Privy verwaltet den Schlüssel, Alchemy den RPC.
Tokens auf dem Server verifizieren
Installieren Sie das Server SDK:
npm install @privy-io/server-auth
Jede authentifizierte Anfrage von Ihrem Frontend enthält ein Privy-Zugriffstoken (JWT). Verifizieren Sie es auf dem Server, bevor Sie einer Benutzer-ID vertrauen:
import { PrivyClient } from '@privy-io/server-auth';
const privy = new PrivyClient(
process.env.PRIVY_APP_ID,
process.env.PRIVY_APP_SECRET
);
export async function GET(req) {
const auth = req.headers.get('authorization')?.replace('Bearer ', '');
try {
const claims = await privy.verifyAuthToken(auth);
// claims.userId is the Privy user DID
return Response.json({ userId: claims.userId });
} catch (err) {
return new Response('Unauthorized', { status: 401 });
}
}
Sie können auch das vollständige Benutzerobjekt (privy.getUser(userId)) abrufen, um verknüpfte Konten, Wallet-Adressen und benutzerdefinierte Metadaten zu überprüfen.
Eine eingebettete Wallet exportieren
Privy ermöglicht Benutzern jederzeit den Export ihres privaten Schlüssels. Die UX ist ein einzelner Hook:
import { useExportWallet } from '@privy-io/react-auth';
const { exportWallet } = useExportWallet();
<button onClick={() => exportWallet()}>Export private key</button>;
Privy zeigt ein sicheres iFrame-Modal an; Ihre App berührt niemals das Schlüsselmaterial.
Autorisierungssignaturen und die Policy Engine
Für sensible Operationen (große Überweisungen, Logins von neuen Geräten) unterstützt Privy Autorisierungssignaturen. Sie definieren eine Richtlinie im Dashboard, verknüpfen sie mit Ihrer App, und Privy erzwingt MFA, Zulassungslisten oder vom Server signierte Genehmigungen, bevor eine Transaktion ausgeführt wird. Details finden Sie im Privy-Autorisierungsschlüssel-Leitfaden. In Kombination mit MFA-Optionen (TOTP, SMS, Passkey) schließt dies die meisten Angriffsflächen für Kontoübernahmen, die einfache Wallets offenlassen würden.
Webhooks
Privy sendet JSON-Ereignisse an Ihren Endpunkt bei Änderungen im Benutzer- und Wallet-Lebenszyklus:
curl -X POST https://yourapp.com/webhooks/privy \
-H "Content-Type: application/json" \
-H "svix-id: msg_..." \
-H "svix-signature: v1,..." \
-d '{
"type": "user.created",
"user": { "id": "did:privy:...", "email": { "address": "a@b.com" } }
}'
Verifizieren Sie den svix-signature-Header mit dem Webhook-Geheimnis aus dem Dashboard, bevor Sie etwas in Ihre Datenbank schreiben.
Häufige Fehler und Ratenbegrenzungen
Einige Fehler treten immer wieder auf:
invalid_token: Das Frontend-JWT ist abgelaufen. Rufen SiegetAccessToken()vonusePrivydirekt vor Ihrer Abfrage auf; Tokens sind eine Stunde lang gültig.403 origin_not_allowed: Ihre Bereitstellungs-URL ist nicht in der Privy-Dashboard-Zulassungsliste. Fügen Siehttps://yourapp.comund alle Vorschau-Domains hinzu.wallet_not_ready: Sie habenuseWalletsgelesen, bevorreadyauf true gesetzt wurde. Schützen Sie alle Wallet-Aufrufe mit demready-Flag.- Ratenbegrenzungen: REST-Endpunkte erlauben 100 Anfragen pro Sekunde pro App im kostenlosen Tarif. Die meisten Apps erreichen dies nie; falls doch, bündeln Sie
getUser-Aufrufe oder cachen Sie nach Benutzer-ID.
Verwenden Sie Apidog, um einen fehlgeschlagenen Webhook lokal erneut abzuspielen. Fügen Sie die rohe Nutzlast in eine Anfrage ein, bearbeiten Sie den Signatur-Header und senden Sie wiederholt Anfragen an Ihren Entwicklungsserver, bis der Handler funktioniert.
Privy Preise
- Kostenlos: bis zu 1.000 monatlich aktive Wallets, Kern-Login-Methoden, eingebettete Wallets auf EVM + Solana.
- Pro: 149 $ pro Monat, höhere MAW-Limits, vollständige Webhook-Suite, Staging-App.
- Enterprise: kundenspezifische SLA, dedizierter Support, Bereitschaftsdienst-Engineering, benutzerdefinierte Richtlinien-Engine-Regeln.
Aktuelle Zahlen finden Sie unter privy.io/pricing; die Tarife ändern sich mit dem Wachstum des Produkts.
Die Privy API mit Apidog testen
Das Client SDK von Privy verbirgt die HTTPS-Aufrufe, aber jede Token-Verifizierung, Benutzerabfrage und jeder Webhook, den Ihr Backend verarbeitet, ist eine reguläre REST-Anfrage. Hier kommt Apidog ins Spiel. Erstellen Sie eine Privy-Sammlung in Apidog, fügen Sie Ihre App-ID und Ihr Geheimnis als Umgebungsvariablen ein und rufen Sie Endpunkte wie GET /api/v1/users/{userId} oder POST /api/v1/users/{userId}/wallets direkt im Tool auf.
Sie können auch Webhook-Nutzlasten vom Dashboard aufzeichnen, sie als Apidog-Anfragen speichern und diese gegen einen lokalen Tunnel wieder abspielen. Richten Sie automatisierte Tests ein, die überprüfen, ob ein gültiges JWT ein Benutzerobjekt zurückgibt und ein abgelaufenes JWT einen 401-Fehler zurückgibt; führen Sie diese bei jeder Bereitstellung aus. Laden Sie Apidog kostenlos herunter und ersparen Sie sich die cURL-Gymnastik. Wenn Sie bereits von Postman umgestiegen sind, deckt der Side-by-Side-Workflow-Leitfaden die vollständige Migration ab.
FAQ
Worin unterscheidet sich Privy von Web3Auth oder Magic?Alle drei bieten eingebettete Wallets an, aber Privy setzt stärker auf gemischte Authentifizierung (E-Mail + Wallet + Social) und eine Policy Engine, die größere Apps benötigen. Web3Auth konzentriert sich auf MPC-Schlüsselsplitting; Magic bietet ein breiteres Magic-Link-Produkt an. Wählen Sie Privy, wenn Sie sowohl eine saubere Onboarding-Benutzeroberfläche als auch eine feingranulare Kontrolle darüber wünschen, was Wallets tun können.
Unterstützt Privy Solana?Ja. Eingebettete Wallets funktionieren auf Solana Mainnet und Devnet, und das React SDK stellt getSolanaProvider() zum Signieren und Senden von Transaktionen bereit. Sie können sowohl EVM als auch Solana in derselben App konfigurieren.
Können Benutzer ihre eigene Wallet mitbringen?Ja. MetaMask, Coinbase Wallet, WalletConnect, Phantom und Dutzende andere funktionieren sofort. Privy behandelt externe Wallets als verknüpfte Konten, sodass dieselbe Benutzer-DID sowohl die eingebetteten als auch die externen Schlüssel besitzt.
Was passiert, wenn Privy ausfällt?Benutzer behalten den Zugriff auf exportierte Wallets, da der Schlüssel in der Browser-Enklave des Benutzers gespeichert ist. Für Produktions-Apps aktivieren Sie die Wallet-Exportierbarkeit und dokumentieren Sie einen Fallback-Pfad. Weitere Informationen zu Anbieter-Risikomustern finden Sie im Leitfaden zum Vergleich von Identitätsanbietern.
Unterstützt Privy MFA?Ja. TOTP, SMS und Passkeys sind alle integriert, und Sie können MFA für bestimmte Aktionen (Senden von Tokens, Exportieren von Wallets) über die Policy Engine vorschreiben.
Läuft der Code meiner App serverseitig oder clientseitig?Beides. Das Client SDK übernimmt die Login-Benutzeroberfläche und das Signieren; das Server SDK verifiziert Tokens und ruft Benutzerdaten ab. Geben Sie Ihr App-Geheimnis niemals an den Browser weiter.
