Mendaftarkan pengguna ke aplikasi Web3 masih membuat kebanyakan orang mundur pada langkah pertama. Frasa pemulihan (seed phrase), ekstensi browser, dan biaya gas mengubah pendaftaran dua kali ketuk menjadi perjuangan sepuluh menit. Privy API mengatasi kesenjangan tersebut dengan memberikan setiap pengguna baru dompet tersemat di balik login yang familiar: email, SMS, Google, Apple, atau dompet yang sudah ada seperti MetaMask. Anda mendapatkan pengguna asli kripto tanpa meminta siapa pun untuk menginstal ekstensi browser.
Privy kini mendukung dompet untuk Blackbird, Friend.tech, OpenSea, dan ribuan aplikasi lainnya, dan produk ini mencakup Ethereum, Solana, serta rantai EVM lainnya. Panduan ini menjelaskan alur kerja developer secara lengkap: membuat aplikasi Privy, menghubungkan React SDK, memverifikasi token di server, menandatangani transaksi dengan dompet tersemat, dan mengirimkan webhook. Jika Anda juga ingin membandingkan opsi seperti perangkat pengembang MetaMask, biarkan halaman ini tetap terbuka dan bolak-balik.
Singkatnya
- Privy menggabungkan dompet tersemat dengan login email, SMS, sosial, dan dompet eksternal dalam satu SDK.
- React SDK mengekspos
PrivyProvider,useLogin,useWallets, danusePrivyhooks untuk mencakup alur otentikasi dan penandatanganan secara lengkap. @privy-io/server-authmemverifikasi token akses di backend Anda sehingga Anda dapat mempercayai ID pengguna di setiap permintaan.- Dompet mendukung Ethereum, Solana, dan rantai EVM lainnya, dengan opsi ekspor dan tanda tangan otorisasi untuk operasi penting.
- Webhook diaktifkan pada pembuatan pengguna, login, dan peristiwa dompet, sehingga basis data Anda tetap sinkron tanpa polling.
- Mesin kebijakan Privy menambahkan MFA, daftar yang diizinkan (allowlists), dan aturan transaksi tanpa mem-fork kode aplikasi Anda.
Apa itu Privy API?
Privy adalah platform infrastruktur otentikasi dan dompet. Ini memberikan tiga hal pada aplikasi Anda: UI login, dompet tersemat yang disediakan per pengguna, dan serangkaian endpoint REST untuk pemeriksaan sisi server. Dompet tersemat berada di enklaf yang aman, sehingga Privy tidak pernah melihat kunci pribadi dan backend Anda juga tidak. Pengguna dapat mengekspor kunci mereka nanti jika mereka ingin berpindah ke dompet self-custody; opsi tersebut adalah bagian besar dari daya tariknya.
Platform ini mengenakan biaya per dompet aktif bulanan, yang berarti Anda dapat merilis prototipe secara gratis dan menyesuaikan harga seiring dengan pertumbuhan daya tarik. Paket gratis mencakup 1.000 pengguna aktif bulanan, Pro dimulai dari $149 per bulan, dan Enterprise menangani SLA khusus.
Otentikasi dan Pengaturan
Mulai di privy.io dan buat aplikasi baru dari dasbor. Anda akan mendapatkan dua nilai penting:
- ID Aplikasi (
clxxxxx...) untuk client SDK - Secret Aplikasi untuk server SDK
Atur metode login yang diizinkan (email, SMS, Google, Apple, Farcaster, dompet), pilih rantai default Anda, dan masukkan domain Anda ke dalam daftar asal yang diizinkan (allowed origins). Untuk React, instal SDK:
npm install @privy-io/react-auth
Bungkus aplikasi Anda di 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>
);
}
Flag createOnLogin menyediakan dompet tersemat pertama kali pengguna login tanpa satu pun. Anda mengontrol rantai yang didukung; Solana berada di bawah konfigurasi solanaClusters yang terpisah.
Endpoint Inti dan Panggilan SDK
React SDK Privy menangani sebagian besar alur sehingga Anda jarang mengakses REST mentah. Namun, server SDK dan payload webhook menggunakan format token yang sama, jadi mengetahui API dasarnya membantu saat terjadi masalah.
Memicu Login dan Membaca Pengguna
import { usePrivy, useWallets } from '@privy-io/react-auth';
function LoginButton() {
const { ready, authenticated, login, logout, user } = usePrivy();
const { wallets } = useWallets();
if (!ready) return <p>Memuat...</p>;
if (!authenticated) return <button onClick={login}>Masuk</button>;
const embedded = wallets.find((w) => w.walletClientType === 'privy');
return (
<div>
<p>Halo {user.email?.address ?? user.id}</p>
<p>Dompet: {embedded?.address}</p>
<button onClick={logout}>Keluar</button>
</div>
);
}
useWallets mengembalikan setiap dompet yang telah dihubungkan pengguna, dan bidang walletClientType memberi tahu Anda dompet mana yang dibuat oleh Privy. Ini adalah pola yang Anda ikuti untuk dompet tersemat Privy.
Menandatangani Transaksi
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);
}
Untuk Solana, tukar getEthereumProvider dengan getSolanaProvider dan lewati transaksi yang diserialkan. Jika Anda ingin mencerminkan pola akses data dari penyedia seperti Alchemy, Privy berfungsi dengan baik bersama mereka; Privy menangani kunci, Alchemy menangani RPC.
Memverifikasi Token di Server
Instal server SDK:
npm install @privy-io/server-auth
Setiap permintaan terotentikasi dari frontend Anda membawa token akses Privy (JWT). Verifikasi di server sebelum Anda mempercayai ID pengguna apa pun:
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 adalah Privy user DID
return Response.json({ userId: claims.userId });
} catch (err) {
return new Response('Tidak Diotorisasi', { status: 401 });
}
}
Anda juga dapat mengambil objek pengguna lengkap (privy.getUser(userId)) untuk memeriksa akun yang terhubung, alamat dompet, dan metadata kustom.
Mengekspor Dompet Tersemat
Privy memungkinkan pengguna mengekspor kunci pribadi mereka kapan saja. UX-nya adalah satu hook:
import { useExportWallet } from '@privy-io/react-auth';
const { exportWallet } = useExportWallet();
<button onClick={() => exportWallet()}>Ekspor kunci pribadi</button>;
Privy menampilkan modal iframe yang aman; aplikasi Anda tidak pernah menyentuh materi kunci.
Tanda Tangan Otorisasi dan Mesin Kebijakan
Untuk operasi sensitif (transfer besar, login perangkat baru), Privy mendukung tanda tangan otorisasi. Anda menentukan kebijakan di dasbor, melampirkannya ke aplikasi Anda, dan Privy memberlakukan MFA, daftar yang diizinkan (allowlists), atau persetujuan yang ditandatangani server sebelum transaksi berhasil. Detailnya ada di panduan kunci otorisasi Privy. Dikombinasikan dengan opsi MFA (TOTP, SMS, passkey), ini menutup sebagian besar celah pengambilalihan akun yang dibiarkan terbuka oleh dompet biasa.
Webhook
Privy mengirimkan peristiwa JSON ke endpoint Anda pada perubahan siklus hidup pengguna dan dompet:
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" } }
}'
Verifikasi header svix-signature dengan secret webhook dari dasbor sebelum Anda menulis apa pun ke basis data Anda.
Kesalahan Umum dan Batas Kecepatan
Beberapa kesalahan muncul berulang kali:
invalid_token: JWT frontend kedaluwarsa. PanggilgetAccessToken()dariusePrivytepat sebelum Anda mengambil; token berlaku selama satu jam.403 origin_not_allowed: URL deployment Anda tidak ada dalam daftar yang diizinkan (allowlist) dasbor Privy. Tambahkanhttps://yourapp.comdan domain pratinjau lainnya.wallet_not_ready: Anda membacauseWalletssebelumreadymenjadi true. Batasi semua panggilan dompet pada flagready.- Batas kecepatan: Endpoint REST mengizinkan 100 permintaan per detik per aplikasi pada paket gratis. Kebanyakan aplikasi tidak pernah mencapai ini; jika Anda melakukannya, batch panggilan
getUseratau cache berdasarkan ID pengguna.
Gunakan Apidog untuk memutar ulang webhook yang gagal secara lokal. Tempel payload mentah ke dalam permintaan, edit header tanda tangan, dan panggil server pengembangan Anda berulang kali hingga handler berhasil.
Harga Privy
- Gratis: hingga 1.000 dompet aktif bulanan, metode login inti, dompet tersemat di EVM + Solana.
- Pro: $149 per bulan, batas MAW lebih tinggi, rangkaian webhook lengkap, aplikasi staging.
- Enterprise: SLA kustom, dukungan khusus, engineering siaga, aturan mesin kebijakan kustom.
Periksa privy.io/pricing untuk angka-angka terbaru; tingkatan dapat berubah seiring pertumbuhan produk.
Menguji Privy API dengan Apidog
Client SDK Privy menyembunyikan panggilan HTTPS, tetapi setiap verifikasi token, pencarian pengguna, dan webhook yang ditangani backend Anda adalah permintaan REST biasa. Di sinilah Apidog sangat berguna. Buat koleksi Privy di Apidog, masukkan ID aplikasi dan secret Anda sebagai variabel lingkungan, dan akses endpoint seperti GET /api/v1/users/{userId} atau POST /api/v1/users/{userId}/wallets tanpa meninggalkan alat.
Anda juga dapat merekam payload webhook dari dasbor, menyimpannya sebagai permintaan Apidog, dan memutarnya ulang terhadap tunnel lokal. Siapkan tes otomatis yang memverifikasi bahwa JWT yang valid mengembalikan objek pengguna dan yang kedaluwarsa mengembalikan 401; jalankan tes ini di setiap deployment. Unduh Apidog secara gratis dan lewati kerumitan cURL. Jika Anda sudah beralih dari Postman, panduan alur kerja berdampingan mencakup migrasi lengkap.
FAQ
- Apa bedanya Privy dengan Web3Auth atau Magic?Ketiganya menawarkan dompet tersemat, tetapi Privy lebih mengandalkan otentikasi campuran (email + dompet + sosial) dan mesin kebijakan yang dibutuhkan aplikasi yang lebih besar. Web3Auth berfokus pada pemisahan kunci MPC; Magic menghadirkan produk magic-link yang lebih luas. Pilih Privy ketika Anda menginginkan UI onboarding yang bersih dan kontrol granular atas apa yang dapat dilakukan dompet.
- Apakah Privy mendukung Solana?Ya. Dompet tersemat berfungsi di mainnet dan devnet Solana, dan React SDK mengekspos
getSolanaProvider()untuk menandatangani dan mengirim transaksi. Anda dapat mengonfigurasi EVM dan Solana dalam aplikasi yang sama. - Bisakah pengguna membawa dompet mereka sendiri?Ya. MetaMask, Coinbase Wallet, WalletConnect, Phantom, dan puluhan lainnya berfungsi secara langsung. Privy memperlakukan dompet eksternal sebagai akun tertaut, sehingga DID pengguna yang sama memiliki kunci tersemat dan eksternal.
- Apa yang terjadi jika Privy down?Pengguna tetap memiliki akses ke dompet yang diekspor, karena kuncinya berada di enklaf browser pengguna. Untuk aplikasi produksi, aktifkan kemampuan ekspor dompet dan dokumentasikan jalur fallback. Lihat panduan untuk membandingkan penyedia identitas untuk lebih lanjut tentang pola risiko vendor.
- Apakah Privy mendukung MFA?Ya. TOTP, SMS, dan passkey semuanya terintegrasi, dan Anda dapat mewajibkan MFA untuk tindakan tertentu (mengirim token, mengekspor dompet) melalui mesin kebijakan.
- Apakah kode aplikasi saya berjalan di sisi server atau sisi klien?Keduanya. Client SDK menangani UI login dan penandatanganan; server SDK memverifikasi token dan mengambil data pengguna. Jangan pernah mengirimkan secret aplikasi Anda ke browser.
