iOS에서 Supabase Google 로그인
설치
이 가이드는 iOS에서 Google Sign-In을 Supabase 인증과 통합하는 방법을 설명합니다. 이미 다음을 완료한 것으로 가정합니다:
Implementation
제목이 'Implementation'인 섹션완전한 implementation은 예제 앱의 예제 앱의 supabaseAuthUtils.ts 파일에서 확인할 수 있습니다. 이 안내서에서는 key concept와 사용 방법을 설명합니다.
인증 Helper를 사용하는 방법
인증 Helper를 사용하는 방법인증 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);}How It Works General Setup 가이드의 How It Works 섹션.
중요한 주의 사항
중요한 주의 사항 섹션iOS 토큰 캐싱 및 비회원 인증 문제
iOS 토큰 캐싱 및 비회원 인증 문제 섹션iOS 비회원 인증 캐싱 문제
iOS에서 Google Sign-In은 토큰을 캐싱할 수 있습니다. 이는 비회원 인증을 실패할 수 있으므로: validateJWTToken 자동 감지
- : 함수는 토큰 내의 비회원 인증이 기대되는 것과 일치하는지 확인합니다.자동 재시도
nonceDigest - : 만약 인증이 실패하면 Google에서 자동으로 로그아웃하고 다시 시도합니다.오류 처리
- 오류 처리: 재시도도 실패하면 오류가 반환됩니다.
이러한 현상이 발생하는 이유는 무엇입니까?: iOS Google Sign-In SDK은 성능을 위해 토큰을 캐싱합니다. 캐시된 토큰이 반환될 때, 캐시된 토큰이 다른 nonce (또는 nonce이 없는 경우)로 생성되었을 수 있습니다. 이로 인해 일치하지 않는 토큰이 반환될 수 있습니다.
: 이 구현은 자동으로 이 문제를 해결합니다. 로그아웃하고 다시 시도하면 Google이 올바른 nonce와 함께 새로운 토큰을 생성하도록 강제합니다.: 자동 재시도가 작동하지 않는 경우
(자동 재시도가 작동하지 않는 경우) : 복사
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();이것은 올바른 비번이 포함된 새로운 토큰을 얻기 위해 올바른 nonce를 사용합니다.
For the complete code reference, see the Complete Code 설정 가이드의 일반 설정 섹션을 완성하세요..
중요한 참고사항
중요한 참고 사항Nonce 처리
Nonce 처리Nonce 구현은 React Native Google Sign In 문서에서 설명하는 패턴을 따릅니다. Google Sign In 문서:
rawNonceSupabase로 이동signInWithIdToken()- Supabase는
rawNonce해시를 생성하여nonceDigest와 비교합니다. nonceDigestGoogle Sign-In에서 제공하는 ID 토큰의nonceSHA-256 해시(16진수 인코딩)로 이동
Google Sign-In API의
자동 재시도 메커니즘The authenticateWithGoogleSupabase 함수에는 매개 변수가 있습니다: retry 첫 번째 호출 (
- context
retry=false): 유효성 검사 실패 시 자동 로그아웃하고 다시 시도합니다 - 재시도 호출 (
retry=true): 유효성 검사 실패 시 즉시 오류를 반환합니다
이것은 iOS 토큰 캐싱 문제를 자동으로 처리합니다.
문제 해결
문제 해결인증이 실패하면:
- Nonce 불일치: 함수는 자동으로 - 콘솔 로그를 확인하여 세부 정보를 확인하십시오. 만약 지속되면, 수동으로 로그아웃하십시오
- 유효한 청중: Google Client IDs가 Google Cloud Console 및 Supabase (iOS 및 Web 클라이언트 ID 모두) 에서 일치하는지 확인하십시오
- 토큰 유효성 검사 실패: initialize 함수에 idToken을 받기 위해
mode: 'online'사용하십시오 - Info.plist 구성: Info.plist에 올바른 URL schemes 및 GIDClientID가 있는지 확인하십시오
- 예시 앱 example app code __CAPGO_KEEP_0__
iOS에서 Supabase Google 로그인으로 계속하기
iOS에서 Supabase Google 로그인으로 계속하기이러한 기능을 사용 중이라면 iOS에서 Supabase Google 로그인 인증 및 계정 흐름을 계획하고 연결하려면 capgo/capacitor 소셜 로그인 사용 Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-passkey Using @capgo/capacitor-passkey Using @capgo/capacitor-native-biometric @capgo/capacitor-social-login Capgo의 구현 세부 정보에 대해 @capgo/capacitor-native-biometric에서 두 단계 인증 Capgo의 구현 세부 정보에 대해 두 단계 인증