메뉴로 가기

Supabase Apple Android 로그인

GitHub

필수 조건

필수 조건

이 가이드는 Android에서 Apple Sign-In을 Supabase 인증과 통합하는 데 도움이 될 것입니다. Apple Sign-In을 사용하려면 Android에서 native 지원이 제공되지 않기 때문에 백엔드 서버가 필요합니다. 이 가이드에서는 Supabase Edge Function을 백엔드 서버로 사용합니다.

Step 1: 백엔드 Edge Function을 배포하세요

Step 1: 백엔드 Edge Function을 배포하세요

처음에 Apple OAuth callback을 처리할 Supabase Edge Function을 배포해야 합니다.

  1. Supabase 프로젝트 디렉토리로 이동하세요

    터미널 창
    cd your-project/supabase
  2. 에지 함수를 생성하세요 (만약 존재하지 않으면)

    터미널 창
    supabase functions new apple-signin-callback
  3. code 에지 함수를 복사하세요

    예제 앱에서 에지 함수 구현을 확인할 수 있습니다. 다음 파일을 프로젝트로 복사하세요:.

    __CAPGO_KEEP_0__

    • supabase/functions/apple-signin-callback/index.ts - 메인 에지 함수 code
    • supabase/functions/apple-signin-callback/deno.json - 의존성에 대한 임포트 맵 (JWT 서명에 대한 라이브러리 포함) jose JWT 검증 구성
  4. Apple OAuth callback 엔드포인트는 Apple이 이를 호출할 수 있도록 공개되어야 합니다. (인증이 필요하지 않습니다.) Apple이 이를 호출할 때, Supabase 인증 헤더가 포함되지 않기 때문입니다. OAuth 흐름을 자체적으로 검증합니다.

    파일: supabase/config.toml 클립보드 복사

    [functions.apple-signin-callback]
    enabled = true
    verify_jwt = false # Important: Set to false for public OAuth callback
    import_map = "./functions/apple-signin-callback/deno.json"
    entrypoint = "./functions/apple-signin-callback/index.ts"
  5. protectedTokens

    Terminal 창
    supabase functions deploy apple-signin-callback
  6. 함수 URL을 가져오세요

    배포 후에 다음 형식의 URL을 받을 것입니다.

    https://your-project-ref.supabase.co/functions/v1/apple-signin-callback

    URL을 찾을 수 없다면 다음을 수행하세요.

    1. 열기 https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions
    2. 클릭하여 apple-signin-callback 함수 URL을 복사하세요. Supabase Functions Apple Sign-In Callback

2단계: Apple Developer Portal 구성

제목 "2단계: Apple Developer Portal 구성"

Apple Developer Portal을 백엔드 URL과 함께 구성하고 필요한 모든 값을 가져와야 합니다.

  1. Apple Login Android 설정 가이드를 따라하세요.

    Apple Login Android 설정 가이드를 완료하세요. 위치: 서비스 ID를 생성하세요.

    • __CAPGO_KEEP_0__
    • 개인 키 (.p8 파일) 생성
    • 팀 ID 및 키 ID 가져오기
    • 리턴 URL 구성
  2. 애플 개발자 포털에서 리턴 URL 설정

    애플 개발자 포털에서 리턴 URL을 구성할 때 (애플 가이드의 6.9 단계), Supabase Edge Function URL을 사용하세요:

    https://your-project-ref.supabase.co/functions/v1/apple-signin-callback

    중요: Supabase Edge Function URL 사용

    사용하지 마세요. 애플 로그인 안드로이드 설정 가이드에서 제공하는 리다이렉트 URL 애플 로그인 안드로이드 설정 가이드는 커스텀 백엔드 서버 URL을 사용합니다. Supabase 통합을 위해, 반드시 must use your Supabase Edge Function URL instead.

  3. 필요한 모든 값을 수집하세요.

    Apple 설정 가이드를 완료한 후, 다음을 갖추어야 합니다.

    • APPLE_TEAM_ID: Apple Developer Team ID
    • APPLE_KEY_ID: Apple Developer Portal에서 Key ID를 가져옵니다.
    • APPLE_PRIVATE_KEY: __CAPGO_KEEP_0__ (base64 인코딩이 필요합니다.)
    • ANDROID_SERVICE_ID: __CAPGO_KEEP_0__ (예: com.example.app.service)
    • BASE_REDIRECT_URL: __CAPGO_KEEP_0__ (예: capgo-demo-app://path)

Step 3: Supabase Secrets 설정

  1. Supabase Edge Function을 구성하기 위해 환경 변수(비밀)를 설정해야 합니다.

    개인 키를 base64로 인코딩하세요

    Apple 개인 키 (.p8 파일)를 base64로 인코딩하세요:
    base64 -i AuthKey_XXXXX.p8

    클립보드에 복사

  2. Set secrets using Supabase CLI

    터미널 창
    supabase secrets set APPLE_TEAM_ID=your_team_id
    supabase secrets set APPLE_KEY_ID=your_key_id
    supabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_key
    supabase secrets set ANDROID_SERVICE_ID=your.service.id
    supabase secrets set BASE_REDIRECT_URL=your-app://path
    supabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
  3. 대안: Supabase 대시보드에서 비밀을 설정하는 경우

    대시보드를 사용하는 경우 선호하는 경우

    1. Supabase 프로젝트 대시보드에 가세요
    2. 가장 먼저 에지 함수설정비밀
    3. __CAPGO_KEEP_0__을 각각의 값과 함께 추가하세요

Step 4: 인증 도우미를 사용하세요.

Step 4: Authentication Helper 사용하기

앱에서 인증 도우미를 사용할 수 있습니다 code.

Implementation

Implementation

예시 앱의 파일에서 supabaseAuthUtils.ts Authentication Helper 사용하기

import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();
if (result.success) {
console.log('Signed in:', result.user);
// Navigate to your authenticated area
} else {
console.error('Error:', result.error);
}

Section titled “Update the Helper Function”

Section titled “Using the Authentication Helper”

When using the authenticateWithAppleSupabase helper function, you must update the following values to match your configuration:

  1. Update redirectUrl -

    const redirectUrl = platform === 'android'
    ? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback'
    : undefined;
  2. Copy to clipboard clientId Update

    await SocialLogin.initialize({
    apple: {
    clientId: isIOS
    ? undefined // iOS uses bundle ID automatically
    : 'your.service.id.here', // Your Apple Service ID for Android
    redirectUrl: redirectUrl,
    },
    });

Step 5: 통합 테스트 Step 5: 통합 테스트 Android 앱을 빌드하고 실행하세요.

터미널 창

복사
  1. 인증 흐름 테스트

    __CAPGO_KEEP_0__
    npx cap sync android
    npx cap run android
  2. __CAPGO_KEEP_2__

    • __CAPGO_KEEP_0__를 클릭하여 Apple 로그인 버튼을 탭하세요.
    • Apple OAuth 페이지를 브라우저에서 확인하실 수 있습니다.
    • 인증이 완료되면 앱으로 돌아옵니다.
    • 콘솔 로그를 확인하여 에러가 발생하는지 확인하세요.
  3. 플로우를 확인하세요.

    완료된 플로우는 다음과 같습니다.

    1. 사용자가 “Apple 로그인” 버튼을 탭합니다.
    2. 앱이 Apple OAuth 브라우저를 열어줍니다.
    3. 사용자가 Apple과 인증합니다.
    4. Apple이 다음으로 리다이렉트합니다. https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
    5. Edge 함수가 code를 토큰으로 교환합니다.
    6. Edge 함수가 다음으로 리다이렉트합니다. your-app://path?id_token=...&access_token=...
    7. 안드로이드 앱이 깊은 링크를 받고 식별 토큰을 처리합니다.
    8. 앱은 식별 토큰으로 Supabase에 로그인합니다.

인증이 실패하는 경우:

  • 리다이렉트 URI 일치하지 않음: Apple Developer Portal에서 Return URL이 정확히 일치하는지 확인하세요. APPLE_REDIRECT_URI secret
  • 깊은 링크가 작동하지 않음: intent filter가 정확히 일치하는지 확인하세요. AndroidManifest.xml 비밀 키가 누락됨 BASE_REDIRECT_URL
  • Redirect URI mismatch: : Verify the Return URL in Apple Developer Portal matches exactly with: __CAPGO_KEEP_0__을 확인하여 모든 비밀을 올바르게 설정했는지 확인합니다. supabase secrets list
  • 토큰 교환 실패: Supabase 대시보드에서 Edge Function 로그를 확인하여 자세한 오류 메시지를 확인하세요.
  • 콜백을 받지 못하는 앱: MainActivity에서 __CAPGO_KEEP_0__을 올바르게 구현했는지 확인하세요. onNewIntent __CAPGO_KEEP_0__ 예제 앱을 참조하세요.
  • 작동 방식 example app code 안드로이드에서 Apple Sign-In은 OAuth 리다이렉트 흐름을 사용합니다.

iOS에서 Apple Sign-In은 OAuth 리다이렉트 흐름을 사용합니다.

iOS에서 Apple Sign-In은 OAuth 리다이렉트 흐름을 사용합니다.

iOS에서 Apple Sign-In은 OAuth 리다이렉트 흐름을 사용합니다.

  1. 초기화: 플러그인은 Service ID와 백엔드 리다이렉트 URL로 초기화됩니다.
  2. OAuth Flow: 브라우저/Chrome Custom Tab을 열어 Apple의 OAuth 페이지로 이동합니다.
  3. 백엔드 콜백: Apple은 인증 code을 백엔드 함수로 리다이렉트합니다.
  4. 토큰 교환: Edge 함수는 Apple의 토큰 엔드포인트를 사용하여 code을 토큰으로 교환합니다.
  5. 딥링크 리다이렉트: Edge 함수는 앱으로 리다이렉트하여 identity 토큰을 전달합니다.
  6. Supabase 인증: 앱은 토큰을 수신하여 Supabase에 로그인합니다.

이 흐름은 Apple이 native Android 지원을 제공하지 않기 때문에 Sign in with Apple에 필요합니다.

Supabase Apple Login on Android에서 계속 진행하세요.

Supabase Apple Login on Android에서 계속 진행하세요

__CAPGO_KEEP_0__를 사용하는 경우 Supabase Apple Login on Android 인증 및 계정 흐름을 계획하고 __CAPGO_KEEP_0__와 연결하세요. capgo/capacitor-social-login capgo/capacitor-social-login의 native 기능을 위해 capgo/capacitor-social-login을 사용하세요. capgo/capacitor-social-login capgo/capacitor-social-login의 구현 세부 정보를 위해 capgo/capacitor-social-login을 사용하세요. capgo/capacitor-passkey capgo/capacitor-passkey의 구현 세부 정보를 위해 capgo/capacitor-passkey을 사용하세요. @capgo/capacitor-native-biometric capgo의 구현 세부 사항에 대한 @capacitor-native-biometric, 그리고 두 단계 인증 __CAPGO_KEEP_0__의 구현 세부 사항에 대한 두 단계 인증.