iOS에서 Supabase Google 로그인
이 플러그인의 설치 단계와 전체 마크다운 가이드가 포함된 설정 프롬프트를 복사하세요.
이 가이드는 iOS에서 Google Sign-In을 Supabase Authentication과 통합하는 데 도움이 됩니다. 다음을 이미 완료한 것으로 가정합니다:
- Google Login iOS 설정 Supabase Google Login - 일반 설정
- Implementation 제목이 'Implementation'인 섹션.
완전한 implementation은 예시 앱의 파일에 있습니다. 이 안내서에서는 주요 개념과 사용 방법을 설명합니다. supabaseAuthUtils.ts Using the Authentication Helper
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 clipboardFor 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__
- __CAPGO_KEEP_0__: nonce가 토큰에 포함되어 있고, 기대하는 nonce와 일치하는지 확인합니다.
nonceDigest - : nonce 검증이 실패할 경우, Google에서 로그아웃하고 다시 한번 시도합니다.: nonce 검증이 실패할 경우, 오류를 처리합니다.
- Error Handling: 만 retry도 실패하면 오류가 반환됩니다
왜 이런 일이 발생하는지: iOS Google Sign-In SDK는 성능을 위해 토큰을 캐싱합니다. 캐시된 토큰이 반환될 때, 캐시된 토큰이 다른 nonce (또는 nonce이 없는 경우)로 생성되었을 수 있습니다. 이로 인해 일치하지 않는 토큰이 반환될 수 있습니다.
해결 방법: implementation은 자동으로 이 문제를 해결합니다. 로그아웃하고 다시 시도하여, Google이 올바른 nonce와 함께 새로운 토큰을 생성하도록 강제합니다.
수동 대안 (자동 재시도가 작동하지 않는 경우):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();올바른 nonce와 함께 새로운 토큰을 얻을 수 있도록 합니다.
완전한 code 참조를 보려면 General Setup 가이드의 Complete Code Reference 섹션을 참조하십시오.
중요한 참고사항
중요한 참고 사항Nonce 처리
Nonce 처리__CAPGO_KEEP_0__의 패턴을 따릅니다. React Native Google Sign In 문서 Supabase로 이동:
rawNonceSupabase는 SHA-256 해시를 생성하고signInWithIdToken()- 해시와 Google Sign-In에서 제공하는
rawNonceID 토큰에서nonceDigestGoogle Sign-In API의 nonceDigest자동 재시도 메커니즘nonceparameter
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