내용으로 건너뛰기

Supabase Google 로그인 iOS

GitHub

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

구현에 대한 전체 구현은 example app’s supabaseAuthUtils.ts 파일에 있습니다. 이 가이드는 주요 개념과 사용 방법을 설명합니다.

Using the Authentication Helper

인증 도우미를 사용하는 방법

The authenticateWithGoogleSupabase 함수는 인증 흐름의 전체를 처리합니다:

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 문제

인증 토큰 캐싱 및 nonce 문제

iOS Nonce Caching Issue

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

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

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

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

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

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

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

완전한 code 참조를 보려면 General Setup 가이드의 완전한 Code 참조.

중요한 주의사항

중요한 주의사항 섹션

nonce 구현은 nonce 처리 섹션의 패턴을 따릅니다. React Native Google Sign In 문서:

  • rawNonce Supabase로 이동 signInWithIdToken()
  • Supabase는 Google Sign-In의 ID 토큰에서 SHA-256 해시를 생성합니다. rawNonce 해시와 Supabase에서 저장한 해시를 비교합니다. nonceDigest Google Sign-In에서 제공하는 ID 토큰에서 SHA-256 해시를 추출합니다.
  • nonceDigest (SHA-256 해시, 16진수 인코딩) Supabase로 이동 nonce Google Sign-In API의 parameter

자동 재시도 메커니즘

자동 재시도 메커니즘

자동 재시도 메커니즘 섹션 authenticateWithGoogleSupabase 함수는 재시도 횟수를 포함합니다. retry 함수에 재시도 횟수 매개변수가 포함됩니다.

  • 첫 번째 호출 (retry=false인증 실패 시 자동 로그아웃하고 다시 시도합니다.
  • 재 호출 (retry=true인증 실패 시 다시 시도하지 않고 오류를 즉시 반환합니다.

iOS 토큰 캐싱 문제를 자동으로 처리합니다.

인증이 실패한 경우:

  • Nonce 일치하지 않음: 함수가 자동으로 다시 시도합니다. - 자세한 내용은 콘솔 로그를 확인하세요. 만약 지속되면 수동으로 로그아웃하세요.
  • Invalid audience: Google 클라이언트 ID가 Google Cloud Console과 Supabase (iOS 및 Web 클라이언트 ID 모두) 에서 일치하는지 확인하세요.
  • 토큰 유효성 검사 실패: 사용 중인 mode: 'online' 을 확인하세요. initialize 호출에서 idToken을 얻기 위해
  • Info.plist 구성: Info.plist에 올바른 URL schemes 및 GIDClientID가 있는지 확인하세요
  • 예시 앱 example app code __CAPGO_KEEP_0__

Supabase Google Login on iOS에서 계속하기

Supabase Google Login on iOS에서 계속하기

Supabase Google Login on iOS를 사용 중인 경우 Supabase Google Login on iOS를 사용 중인 경우 인증 및 계정 흐름을 계획하고 연결하려면 Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-passkey Using @capgo/capacitor-passkey Using @capgo/capacitor-native-biometric Using @capgo/capacitor-native-biometric Two-factor authentication Two-factor authentication