Skip to content

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?: AuthPlayerResponse
  wallet?: UserWallet
  error?: OpenfortError
}

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 = {
  player: string
  accessToken: string
  refreshToken: string
  onSuccess?: (data: StoreCredentialsResult) => void
  onError?: (error: OpenfortError) => void
}