내용으로 건너뛰기

iOS에서 Supabase Google 로그인

이 가이드는 iOS에서 Google Sign-In을 Supabase Authentication과 통합하는 데 도움이 됩니다. 다음을 이미 완료한 것으로 가정합니다:

완전한 implementation은 예시 앱의 파일에 있습니다. 이 안내서에서는 주요 개념과 사용 방법을 설명합니다. supabaseAuthUtils.ts Using the Authentication Helper

복사 authenticateWithGoogleSupabase How It Works

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);
}

인증 흐름이 작동하는 자세한 설명을 원하시면, nonce 생성, JWT 검증, Supabase 로그인과 같은 내용은 General Setup 안내서의 How It Works 섹션을 참조하세요.

Copy to clipboard

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.

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__

__CAPGO_KEEP_0__ iOS에서 Google Sign-In은 토큰을 캐시할 수 있으므로, nonce 검증이 실패할 수 있습니다. 이 경우 nonce가 토큰에 포함되어 있고, 기대하는 nonce와 일치하는지 확인합니다. validateJWTToken __CAPGO_KEEP_0__

  1. __CAPGO_KEEP_0__: nonce가 토큰에 포함되어 있고, 기대하는 nonce와 일치하는지 확인합니다. nonceDigest
  2. : nonce 검증이 실패할 경우, Google에서 로그아웃하고 다시 한번 시도합니다.: nonce 검증이 실패할 경우, 오류를 처리합니다.
  3. Error Handling: 만 retry도 실패하면 오류가 반환됩니다

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

해결 방법: implementation은 자동으로 이 문제를 해결합니다. 로그아웃하고 다시 시도하여, Google이 올바른 nonce와 함께 새로운 토큰을 생성하도록 강제합니다.

수동 대안 (자동 재시도가 작동하지 않는 경우):

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

올바른 nonce와 함께 새로운 토큰을 얻을 수 있도록 합니다.

완전한 code 참조를 보려면 General Setup 가이드의 Complete Code Reference 섹션을 참조하십시오.

중요한 참고사항

중요한 참고 사항

Nonce 처리

Nonce 처리

__CAPGO_KEEP_0__의 패턴을 따릅니다. React Native Google Sign In 문서 Supabase로 이동:

  • rawNonce Supabase는 SHA-256 해시를 생성하고 signInWithIdToken()
  • 해시와 Google Sign-In에서 제공하는 rawNonce ID 토큰에서 nonceDigest Google Sign-In API의
  • nonceDigest 자동 재시도 메커니즘 nonce parameter

The authenticateWithGoogleSupabase 함수에는 매개 변수가 포함되어 있습니다: retry 첫 번째 호출 (

  • ): 인증이 실패하면 자동으로 로그아웃하고 다시 시도합니다retry=false재시도 호출 (
  • ): 인증이 실패하면 즉시 오류를 반환합니다retry=true이것은 iOS 토큰 캐싱 문제를 자동으로 처리합니다.

문제 해결

Section titled “문제 해결”

인증이 실패하면:

If authentication fails:

  • Nonce 불일치: 함수가 자동으로 재시도합니다 - 자세한 내용은 콘솔 로그를 확인하세요. 만약 지속된다면, 수동 로그아웃을 먼저 하세요
  • 유효한 청중: Google 클라이언트 ID가 Google Cloud Console과 Supabase(모바일 및 웹 클라이언트 ID 모두)에서 일치하는지 확인하세요
  • 토큰 유효성 검사 실패: initialize 함수에 idToken을 가져오기 위해 사용하는 __CAPGO_KEEP_0__ mode: 'online' Info.plist 구성
  • : Info.plist에 올바른 URL schemes과 GIDClientID가 포함되어 있는지 확인하세요예시 앱 __CAPGO_KEEP_0__
  • 참조 example app code Token validation fails