useWalletAuth
Authenticate users with external wallets using Sign-In with Ethereum (SIWE).
Usage
import { useWalletAuth } from '@openfort/react-native';
function SiweLogin({ walletAddress }: { walletAddress: string }) {
const { generateSiweMessage, signInWithSiwe, isLoading } = useWalletAuth();
const login = async () => {
const { message } = await generateSiweMessage({
wallet: walletAddress,
from: { domain: 'example.com', uri: 'https://example.com' },
});
if (!message) return;
const signature = await signMessageWithWallet(message); // Your wallet signing logic
await signInWithSiwe({ walletAddress, signature, messageOverride: message });
};
return null;
}Return type
type UseWalletAuthReturn = {
generateSiweMessage(options: GenerateSiweOptions): Promise<SiweMessageResult>
signInWithSiwe(options: SiweSignInOptions): Promise<WalletAuthResult>
linkSiwe(options: LinkSiweOptions): Promise<WalletAuthResult>
isLoading: boolean
isError: boolean
isSuccess: boolean
isAwaitingSignature: boolean
isGeneratingMessage: boolean
isSubmittingSignature: boolean
error?: OpenfortError | null
}
type WalletAuthResult = {
user?: AuthPlayerResponse
error?: OpenfortError
}
type SiweMessageResult = {
message?: string
error?: OpenfortError
}Parameters
generateSiweMessage
type GenerateSiweOptions = {
wallet: string | { address: string }
from: {
domain: string
uri: string
}
onSuccess?: (data: SiweMessageResult) => void
onError?: (error: OpenfortError) => void
}signInWithSiwe
type SiweSignInOptions = {
walletAddress: string
signature: string
messageOverride?: string
disableSignup?: boolean
onSuccess?: (data: WalletAuthResult) => void
onError?: (error: OpenfortError) => void
}linkSiwe
Links a wallet to an existing account.
type LinkSiweOptions = {
walletAddress: string
signature: string
messageOverride?: string
onSuccess?: (data: WalletAuthResult) => void
onError?: (error: OpenfortError) => void
}