__CAPGO_KEEP_11__
__CAPGO_KEEP_4__
__CAPGO_KEEP_11__
Section titled “Introduction”이 가이드는 iOS에서 Google Sign-In을 Supabase Authentication과 통합하는 방법을 설명합니다. 이 가이드를 사용하기 전에 다음을 완료한 것으로 가정합니다:
Implementation
Section titled “Implementation”완전한 구현은 예제 앱의 파일에서 확인할 수 있습니다. 이 가이드는 주요 개념과 사용 방법을 설명합니다. supabaseAuthUtils.ts Using the Authentication Helper
__CAPGO_KEEP_0__
Using the Authentication HelperThe authenticateWithGoogleSupabase function handles the entire authentication flow:
import { authenticateWithGoogleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithGoogleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}How It Works
How It WorksFor a detailed explanation of how the authentication flow works, including nonce generation, JWT validation, and Supabase sign-in, see the How It Works section in the General Setup guide.
Important Caveats
iOS Token Caching and Nonce IssuesiOS Token Caching and Nonce Issues
Important CaveatsiOS Nonce Caching Issue
iOS에서 Google Sign-In이 토큰을 캐싱할 수 있으므로, nonce 검증이 실패할 수 있습니다. 이 validateJWTToken 함수는 이 문제를 자동으로 처리합니다.
- 자동 감지: 함수는 토큰에 있는 nonce가 예상되는 nonce와 일치하는지 확인합니다.
nonceDigest - 자동 재시도: 검증이 실패하면 Google에서 자동으로 로그아웃하고 다시 시도합니다.
- 에러 처리: 재시도가 실패하면 에러가 반환됩니다.
왜 이런 일이 발생하는가: iOS Google Sign-In SDK은 성능을 위해 토큰을 캐싱합니다. 캐시된 토큰이 반환될 때, 다른 nonce (또는 nonce가 없는 경우)로 생성된 토큰이 반환될 수 있으므로 일치하지 않을 수 있습니다.
해결책__CAPGO_KEEP_0__ : 자동으로 구현되므로 로그아웃하고 다시 시도하여 Google이 올바른 nonce를 포함한 새로운 토큰을 생성하도록 강제합니다.
수동 대안 (자동 재시도가 작동하지 않으면):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();올바른 nonce를 포함한 새로운 토큰이 획득되도록 합니다.
code에 대한 전체 참조는 General Setup 가이드의 "code 참조" 섹션을 참조하십시오. Complete Code Reference section in the General Setup guide.
"중요한 주의 사항"이라는 제목을 가진 섹션
nonce 처리"nonce 처리"라는 제목을 가진 섹션
nonce 처리 구현은 Cloudflare에서 제공하는 패턴을 따릅니다.__CAPGO_KEEP_0__ 참조 React Native Google Sign In 문서:
rawNonceGoogle Sign-In으로부터 ID 토큰을 받은 후signInWithIdToken()- Supabase는
rawNonce를 해시화합니다.nonceDigest해시화된 값을 Google Sign-In의 nonceDigest에서 확인합니다.nonceGoogle Sign-In API의
자동 재시도 메커니즘
자동 재시도 메커니즘The authenticateWithGoogleSupabase 함수에는 retry 파라미터가 있습니다:
- 첫 번째 호출 (
retry=false): 유효성 검사 실패 시 자동 로그아웃하고 다시 시도합니다 - 재시도 호출 (
retry=true): 유효성 검사 실패 시 다시 시도하지 않고 오류를 즉시 반환합니다
이것은 iOS 토큰 캐싱 문제를 자동으로 처리합니다.
문제 해결
제목 ‘문제 해결’인증이 실패한 경우:
- Nonce 일치하지 않음: 함수가 자동으로 다시 시도합니다 - 자세한 내용은 콘솔 로그를 확인하세요. 만약 지속된다면 수동 로그아웃을 먼저 하세요
- 유효한 청중: Google 클라이언트 ID가 Google Cloud Console과 Supabase(모바일 및 웹 클라이언트 ID 모두)에서 일치하는지 확인하세요
- 토큰 유효성 검사 실패: __CAPGO_KEEP_0__에서 사용 중인지 확인하세요
mode: 'online'initialize 호출에서 idToken을 얻기 위해 - Info.plist 구성: Info.plist에 올바른 URL schemes 및 GIDClientID가 있는지 확인하세요
- Review the code 예제 앱을 참조하세요 Keep going from Supabase Google Login on iOS
Section titled “iOS에서 Supabase Google Login을 사용 중이시면” Supabase Google Login on iOS를 사용 중이시면 인증 및 계정 흐름을 계획하고 연결하려면 @capgo/capacitor-social-login을 사용하세요. @capgo/capacitor-social-login의 원시 기능을 사용하세요. @capgo/capacitor-social-login @capgo/capacitor-social-login의 구현 세부 정보를 참조하세요. @capgo/capacitor-passkey @capgo/capacitor-passkey의 구현 세부 정보를 참조하세요. @capgo/capacitor-native-biometric @capgo/capacitor-native-biometric의 구현 세부 정보를 참조하세요. 그리고 두 단계 인증 두 단계 인증의 구현 세부 정보를 참조하세요.