내용으로 건너뛰기

__CAPGO_KEEP_11__

이 가이드는 iOS에서 Google Sign-In을 Supabase Authentication과 통합하는 방법을 설명합니다. 이 가이드를 사용하기 전에 다음을 완료한 것으로 가정합니다:

완전한 구현은 예제 앱의 파일에서 확인할 수 있습니다. 이 가이드는 주요 개념과 사용 방법을 설명합니다. supabaseAuthUtils.ts Using the Authentication Helper

The 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 Works

For 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.

iOS Token Caching and Nonce Issues

Important Caveats

iOS Nonce Caching Issue

iOS에서 Google Sign-In이 토큰을 캐싱할 수 있으므로, nonce 검증이 실패할 수 있습니다. 이 validateJWTToken 함수는 이 문제를 자동으로 처리합니다.

  1. 자동 감지: 함수는 토큰에 있는 nonce가 예상되는 nonce와 일치하는지 확인합니다. nonceDigest
  2. 자동 재시도: 검증이 실패하면 Google에서 자동으로 로그아웃하고 다시 시도합니다.
  3. 에러 처리: 재시도가 실패하면 에러가 반환됩니다.

왜 이런 일이 발생하는가: iOS Google Sign-In SDK은 성능을 위해 토큰을 캐싱합니다. 캐시된 토큰이 반환될 때, 다른 nonce (또는 nonce가 없는 경우)로 생성된 토큰이 반환될 수 있으므로 일치하지 않을 수 있습니다.

해결책__CAPGO_KEEP_0__ : 자동으로 구현되므로 로그아웃하고 다시 시도하여 Google이 올바른 nonce를 포함한 새로운 토큰을 생성하도록 강제합니다.

수동 대안 (자동 재시도가 작동하지 않으면):

// Logout first to clear cached tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const result = await authenticateWithGoogleSupabase();

올바른 nonce를 포함한 새로운 토큰이 획득되도록 합니다.

code에 대한 전체 참조는 General Setup 가이드의 "code 참조" 섹션을 참조하십시오. Complete Code Reference section in the General Setup guide.

"중요한 주의 사항"이라는 제목을 가진 섹션

nonce 처리

__CAPGO_KEEP_0__ 참조 React Native Google Sign In 문서:

  • rawNonce Google Sign-In으로부터 ID 토큰을 받은 후 signInWithIdToken()
  • Supabase는 rawNonce 를 해시화합니다. nonceDigest 해시화된 값을 Google Sign-In의
  • nonceDigest 에서 확인합니다. nonce Google 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의 구현 세부 정보를 참조하세요. 그리고 두 단계 인증 두 단계 인증의 구현 세부 정보를 참조하세요.