Supabase Google 로그인
설치 단계 및 이 플러그인의 전체 마크다운 가이드가 포함된 설정 지시어를 복사하세요.
이 가이드는 iOS에서 Google Sign-In을 Supabase Authentication과 통합하는 데 도움이 됩니다. 이미 완료한 것으로 가정합니다:
Implementation
Section titled “Implementation”완전한 구현은 example app의 supabaseAuthUtils.ts 파일에서 사용할 수 있습니다. 이 가이드는 주요 개념과 사용 방법을 설명합니다.
Using the Authentication Helper
Using the Authentication HelperThe authenticateWithGoogleSupabase __CAPGO_KEEP_0__ 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
iOS Token Caching and Nonce IssuesiOS 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를 가진 새로운 토큰을 생성하도록 강제합니다.
Manual Workaround (자동 재시도가 작동하지 않는 경우):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();이것은 올바른 nonce를 가진 새로운 토큰을 얻는 것을 보장합니다.
code에 대한 전체 참조는 General Setup 가이드의 Complete code Reference 섹션을 참조하십시오. Complete Code Reference section in the General Setup guide.
제목이 ‘중요한 주의 사항’인 섹션
Nonce 처리제목이 ‘Nonce 처리’인 섹션
__CAPGO_KEEP_0__ 참조는 General Setup 가이드의 Complete __CAPGO_KEEP_0__ Reference 섹션을 참조하십시오.__CAPGO_KEEP_0__ 참조는 General Setup 가이드의 Complete __CAPGO_KEEP_0__ Reference 섹션을 참조하십시오. 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 call (
retry=true): 유효성 검사 실패 시 다시 시도하지 않고 오류를 즉시 반환합니다.
이것은 iOS 토큰 캐싱 문제를 자동으로 처리합니다.
문제 해결
제목이 '문제 해결'인 섹션인증이 실패한 경우:
- Nonce 일치하지 않음: 함수가 자동으로 다시 시도합니다 - 자세한 내용은 콘솔 로그를 확인하세요. 만약 지속된다면 수동 로그아웃을 먼저 하세요.
- 유효한 청중: Google 클라이언트 ID가 Google Cloud Console과 Supabase(모바일 및 웹 클라이언트 ID 모두)에서 일치하는지 확인하세요.
- 토큰 유효성 검사 실패: __CAPGO_KEEP_0__에서 사용 중인지 확인하세요
mode: 'online'__CAPGO_KEEP_0__ 초기화 호출에서 idToken을 가져오려면 - Info.plist 구성: Info.plist에 올바른 URL schemes 및 GIDClientID가 있는지 확인하세요
- 예시 앱 __CAPGO_KEEP_0__을 참조하세요 example app code Supabase Google Login on iOS에서 계속하기
__CAPGO_KEEP_0__
Supabase Google Login on iOS를 사용 중이라면__CAPGO_KEEP_0__에서 계속하기 __CAPGO_KEEP_0__ 인증 및 계정 흐름을 계획하고 연결하려면 @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의 구현 세부 정보를 위해, 두 단계 인증 두 단계 인증의 구현 세부 정보를 위해.