useOAuth
Authenticate with third-party providers like Google, Apple, Facebook, Discord, and Twitter.
Usage
import { OAuthProvider, useOAuth } from '@openfort/react';
function SocialLogin() {
const { initOAuth, linkOauth, isLoading } = useOAuth();
const loginWithGoogle = () => initOAuth({ provider: OAuthProvider.GOOGLE });
const linkDiscord = () => linkOauth({ provider: OAuthProvider.DISCORD });
return null;
}Return type
type UseOAuthReturn = {
initOAuth(options: InitOAuthOptions): Promise<OAuthResult>
linkOauth(options: InitOAuthOptions): Promise<OAuthResult>
storeCredentials(options: StoreCredentialsOptions): Promise<StoreCredentialsResult>
isLoading: boolean
isError: boolean
isSuccess: boolean
error?: OpenfortError | null
}
type OAuthResult = {
error?: OpenfortError
}
type StoreCredentialsResult = {
user?: User
wallet?: UserWallet
error?: OpenfortError
}Hook options
Configure default behavior when initializing the hook.
type UseOAuthOptions = {
// Default OAuth redirect URL.
redirectTo?: string
// Log out the user if wallet recovery fails. Defaults to true.
logoutOnError?: boolean
// Automatically recover the wallet after authentication. Defaults to true.
recoverWalletAutomatically?: boolean
onSuccess?: (data: StoreCredentialsResult | OAuthResult) => void
onError?: (error: OpenfortError) => void
}Parameters
initOAuth / linkOauth
type InitOAuthOptions = {
provider: OAuthProvider
redirectTo?: string
onSuccess?: (data: OAuthResult) => void
onError?: (error: OpenfortError) => void
}
enum OAuthProvider {
GOOGLE = "GOOGLE",
FACEBOOK = "FACEBOOK",
DISCORD = "DISCORD",
TWITTER = "TWITTER",
EPIC_GAMES = "EPIC_GAMES",
APPLE = "APPLE",
CUSTOM = "CUSTOM",
}storeCredentials
Store OAuth credentials manually for custom OAuth flows.
type StoreCredentialsOptions = {
userId: string
token: string
// Overrides the hook-level default.
logoutOnError?: boolean
// Overrides the hook-level default.
recoverWalletAutomatically?: boolean
onSuccess?: (data: StoreCredentialsResult) => void
onError?: (error: OpenfortError) => void
}