Kunci sesi dan izin menyediakan cara aman untuk memungkinkan aplikasi melakukan tindakan atas nama pengguna tanpa memerlukan otentikasi terus-menerus. Ini sangat berguna untuk permainan dan aplikasi yang perlu melakukan transaksi secara otomatis.
interface Permissions { approvedTargets: string[]; // Alamat kontrak startDate: Date; // Kapan izin menjadi aktif endDate: Date; // Kapan izin berakhir nativeTokenLimitPerTransaction: number; // Batas ETH per tx // Batasan token ERC-20 tambahan dapat ditambahkan}
Untuk aplikasi permainan, Anda mungkin memerlukan izin yang lebih luas:
Copy
Ask AI
function GamePermissions() { const gamePermissions = { approvedTargets: [ "0x...", // Kontrak game "0x...", // Pasar NFT "0x...", // Kontrak token ], startDate: new Date(), endDate: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000), // 7 hari nativeTokenLimitPerTransaction: 0.001, // Batas ETH kecil untuk gas }; return ( <div className="game-permissions"> <h3>Berikan Izin Game</h3> <p>Izinkan game ini melakukan tindakan atas nama Anda selama 7 hari</p> <RequestPermissionsButton chain={b3Chain} sessionKeyAddress="0x..." permissions={gamePermissions} onSuccess={() => { // Arahkan ke game atau perbarui UI console.log("Izin game berhasil diberikan!"); }} onError={(error) => { console.error("Gagal memberikan izin game:", error); }} /> </div> );}
Kesalahan terkait izin umum dan cara menanganinya:
Copy
Ask AI
function PermissionErrorHandling() { const handlePermissionError = (error: Error) => { switch (error.message) { case 'USER_REJECTED': console.log('Pengguna menolak permintaan izin'); break; case 'INSUFFICIENT_PERMISSIONS': console.log('Izin yang diminta melebihi batas'); break; case 'EXPIRED_SESSION': console.log('Kunci sesi telah kadaluarsa'); // Minta izin baru break; default: console.error('Kesalahan izin tidak diketahui:', error); } }; return ( <RequestPermissionsButton // ... prop lainnya onError={handlePermissionError} /> );}