import { OAUTH_CONFIGS } from "@/config"; import { UseOAuthProps } from "@/types"; import { APP_SCHEME, getClientId } from "@/utils"; import { makeRedirectUri, useAuthRequest } from "expo-auth-session"; import Constants from "expo-constants"; import { useMemo } from "react"; import { useOAuthCore } from "./useOAuthCore"; export function useOAuth({ onSuccess, onError }: UseOAuthProps) { const redirectUri = useMemo(() => makeRedirectUri({ scheme: APP_SCHEME }), []); const appleClientId = useMemo(() => getClientId("apple"), []); // Google OAuth 설정 const [requestGoogle, responseGoogle, promptAsyncGoogle] = useAuthRequest( { clientId: Constants.expoConfig?.extra?.googleClientIdWeb, scopes: OAUTH_CONFIGS.google.scopes, redirectUri, }, OAUTH_CONFIGS.google.discovery ); // Apple OAuth 설정 const [requestApple, responseApple, promptAsyncApple] = useAuthRequest( { clientId: appleClientId, scopes: OAUTH_CONFIGS.apple.scopes, redirectUri, }, OAUTH_CONFIGS.apple.discovery ); return useOAuthCore({ onSuccess, onError, responseGoogle, requestGoogle, responseApple, requestApple, promptAsyncGoogle, promptAsyncApple, }); }