메인 콘텐츠로 바로가기
튜토리얼

Capacitor Social Login 플러그인을 사용하여 Supabase 인증 설정하기

Learn how to integrate Supabase authentication with the Capgo Social Login plugin for seamless Google, Apple, and Facebook authentication in your Capacitor app.

마틴 도나디유

마틴 도나디유

콘텐츠 마케터

Capacitor Social Login 플러그인을 사용하여 Supabase 인증 설정하기

모바일 앱에서 인증을 설정하는 것은 복잡할 수 있지만 Supabase와 __CAPGO_KEEP_0__ Social Login 플러그인을结合하면 간단해집니다. 이 튜토리얼은 Supabase와 __CAPGO_KEEP_0__ 앱에서 Google, Apple, Facebook과 같은 사회 인증을 통합하는 방법을 안내합니다. Supabase와 Social Login을 사용하는 이유는 무엇인가요? Supabase는 내장 인증을 포함한 강력한 백엔드-어스-어 서비스를 제공하며, @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-social-login 플러그인은 iOS, Android, 웹 플랫폼에서 네이티브 사회 인증을 제공합니다. 더 chặt한 Supabase 통합을 위해, @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-supabase는 네이티브 인증 도우미와 JWT 접근을 제공합니다. 함께 사용하면 다음과 같은 기능을 제공합니다: Capgo Social Login plugin makes it straightforward. This tutorial will guide you through integrating social authentication (Google, Apple, Facebook) with Supabase in your Capacitor app.

Supabase

with the Social Login plugin @capgo/capacitor-social-login This tutorial will guide you through integrating social authentication (Google, Apple, Facebook) with Supabase in your @capgo/capacitor-supabase Supabase

  • 무난한 소셜 인증
  • 안전한 토큰 관리
  • 플랫폼 간 호환성
  • 실시간 데이터베이스 통합
  • 내장된 사용자 관리

사전 요구 사항

시작하기 전에 다음을 확인하세요:

  • Capacitor 프로젝트가 설정되어 있습니다
  • Supabase 계정 및 프로젝트
  • 소셜 제공자(구글, 애플, 페이스북)에서 개발자 계정

Step 1: 소셜 로그인 플러그인을 설치하고 구성하세요

먼저 Capgo 소셜 로그인 플러그인을 설치하세요:

npm install @capgo/capacitor-social-login
npx cap sync

See the Social Login and Supabase 플랫폼에 따라 설정하기 위해

Step 2: Supabase 프로젝트 설정

Supabase 프로젝트 만들기 및 설정

  1. Supabase 프로젝트 만들기:

    • Go to __CAPGO_KEEP_0__ 에서 가입/로그인하세요
    • __CAPGO_KEEP_1__ 새 프로젝트
    • 회사 선택
    • Enter a 프로젝트 이름 (예: "MyApp Auth")
    • 데이터베이스 비밀번호 설정 (이것을 안전하게 저장하세요) 지역 선택
    • (가장 가까운 사용자 위치) 클릭 __CAPGO_KEEP_0__
    • __CAPGO_KEEP_1__ 새 프로젝트 만들기
  2. 프로젝트 인증 정보를 받으세요:

    • 생성된 후 이동하세요 설정 > API
    • 복사하세요 프로젝트 URL (예를 들어 https://your-project-ref.supabase.co)
    • 복사하세요 익명 공용 API 키
    • 앱에서 나중에 사용하기 위해 저장하세요

인증 설정을 구성하세요

  1. 일반 인증 설정을 구성하세요:

    • 로 이동하세요 인증 > 설정
    • 아래 일반 설정:
      • 설정 사이트 URL 앱의 URL (예: https://yourdomain.com 또는 http://localhost:3000 개발용
      • 추가 리다이렉트 URL 필요한 경우:
        http://localhost:3000
        https://yourdomain.com
        capacitor://localhost (for mobile apps)
  2. 이메일 설정을 구성하십시오 (선택적이지만 권장되는):

    • 아래 SMTP 설정, 이메일 제공자를 구성하십시오
    • 이메일 확인 및 비밀번호 초기화가 가능합니다
    • 개발을 위해 내장된 이메일 서비스를 사용할 수 있습니다

사회 인증 제공자를 활성화하십시오

  1. 제공자 섹션에 접근하십시오:
    • 가장 인증 > 제공자 Supabase 대시보드에서
    • 가용한 사회 제공자 목록을 볼 수 있습니다
    • 각 제공자는 켜기 toggle 및 설정 옵션

각각의 사회 제공자를 자세히 설정해 보겠습니다:

Step 3: Supabase에서 사회 제공자 설정

Supabase에서 Google 인증 설정

먼저 Google OAuth 인증서를 받으세요:

전체적인 Google 설정 가이드를 따라하세요: Google 인증 설정

이 가이드는:

  • Google Cloud 프로젝트를 만듭니다.
  • 웹, iOS, Android를 위한 OAuth 2.0 인증서를 설정합니다.
  • consent 화면을 설정합니다.
  • 필요한 Client ID 및 비밀번호를 얻습니다.

Google 설정을 마치면 Supabase에서 설정을 완료하세요:

  1. Supabase에서 Google 제공자를 활성화합니다.:
    • Supabase 대시보드에서 인증 > 제공자
    • 찾아 Google 활성화 ON
    • __CAPGO_KEEP_0__을 입력하세요:
      • __CAPGO_KEEP_1__ ID__CAPGO_KEEP_2__: Google OAuth__CAPGO_KEEP_0__ __CAPGO_KEEP_3__ __CAPGO_KEEP_4__ ID (Google Cloud Console에서 가져옵니다)
      • __CAPGO_KEEP_5____CAPGO_KEEP_2__: Google OAuth__CAPGO_KEEP_4__ __CAPGO_KEEP_6__ __CAPGO_KEEP_7__
      • __CAPGO_KEEP_8__: https://your-project-ref.supabase.co/auth/v1/callback __CAPGO_KEEP_9__ (자동으로 채워집니다)
    • __CAPGO_KEEP_10__ 저장

중요: 사용자 웹 클라이언트 ID웹 클라이언트 시크릿 Supabase 에서 사용하세요. 모바일 앱을 개발하는 경우에도.

모바일 클라이언트 ID 는 플러그인 구성에서 별도로 사용됩니다.

Apple 인증을 Supabase 에서 설정하는 방법

Apple 인증을 위한 인증서를 받으세요: 자세한 Apple 설정 가이드를 따라하세요:

Apple 인증 설정

  • Apple 개발자 계정 설정
  • App ID 및 Service ID 생성
  • Apple 로그인 기능 설정
  • 필요한 개인 키 생성
  • iOS, Android, 및 Web 플랫폼에 대한 설정

Apple 설정을 완료한 후 Supabase에서 설정하십시오:

  1. Supabase에서 Apple 제공자 활성화:
    • 다음으로 이동하십시오: 인증 > 제공자 Apple 제공자 활성화 Apple ON
    • 설정 값을 입력하세요:
      • 클라이언트 ID: 서비스 ID 식별자 (예: com.yourapp.signin)
      • 클라이언트 시크릿: Apple 개인 키를 사용하여 JWT를 생성하세요 (see Supabase Apple docs 에서 JWT 형식)
      • 리다이렉트 URL: https://your-project-ref.supabase.co/auth/v1/callback (자동 채우기)
    • 클릭 “저장”

주의: Apple 인증 설정은 Apple의 Service ID, 개인 키 및 JWT 생성을 위한 요구 사항으로 인해 가장 복잡합니다. 각 플랫폼에 대한 문서를 신중히 따르세요.

Facebook 인증 설정을 위한 Supabase 설정

Facebook 인증을 위한 자격 증명 획득:

자세한 Facebook 설정 가이드를 따라하세요: Facebook 인증 설정

이 가이드는 다음을 다룹니다:

  • Facebook 개발자 계정 및 앱 만들기
  • Facebook 로그인 제품 추가
  • OAuth 리다이렉션 URI 구성
  • App ID, App Secret 및 Client Token 획득
  • iOS 및 Android에 대한 플랫폼별 구성

Facebook 인증 설정을 완료한 후 Supabase에서 구성하세요:

  1. Facebook 제공자 활성화:
    • 로 이동하세요 인증 > 제공자 그리고 Facebook 제공자를 활성화 Facebook
    • ON
      • 구성 정보를 입력하세요:클라이언트 ID
      • : Facebook 앱 ID클라이언트 시크릿
      • : Facebook 앱 시크릿 키: https://your-project-ref.supabase.co/auth/v1/callback (자동 채우기)
    • 클릭 “Save”

중요: Supabase callback URL (https://your-project-ref.supabase.co/auth/v1/callback)을 Facebook 앱의 OAuth Redirect URI Facebook 로그인 설정에서

중요한 Supabase 구성 참고 사항

Row Level Security (RLS):

  • 인증을 설정한 후 테이블에 RLS를 활성화하세요
  • 가기 데이터베이스 > 테이블 및 토글 RLS 활성화 각 테이블에 대해
  • 인증된 사용자에 따라 데이터 접근을 제어하는 정책을 생성하세요.

사용자 관리:

  • 인증된 사용자를 인증 > 사용자
  • 인증 이벤트를 모니터링하세요. 인증 > 로그
  • 이메일 템플릿을 설정하세요. 인증 > 이메일 템플릿

테스트 설정:

  • Supabase의 내장 인증 테스트 도구를 사용하세요
  • 로 이동하세요 인증 > 사용자 클릭하세요 ‘사용자 초대’ 이메일 흐름을 테스트하기 위해
  • 인증 오류가 있는지 로그 섹션을 확인하세요 4단계: Social Login 플러그인 구성 Supabase가 구성되면, Social Login 플러그인을 구성하기 위해 해당 인증 정보를 설정해야 합니다.

4단계: Social Login 플러그인 구성

Supabase가 구성되면, Social Login 플러그인을 구성하기 위해 해당 인증 정보를 설정해야 합니다. 중요: OAuth 인증 정보가 필요합니다. 원본 제공자 (Supabase가 아닌)

서버 측 인증을 처리하는 Supabase

인증 흐름

  1. 구성하기 전에 흐름을 이해하세요: 플러그인은
  2. 소셜 제공자 (Google/Apple/Facebook)와 자연스럽게 인증합니다
  3. 플러그인은 제공자로부터 토큰을 받습니다 (액세스 토큰, ID 토큰) signInWithIdToken()
  4. __CAPGO_KEEP_0__는 __CAPGO_KEEP_0__이 제공자와 유효성을 검사하고 사용자 세션을 생성합니다.
  5. __CAPGO_KEEP_0__은 __CAPGO_KEEP_0__이 인증된 요청을 위한 앱의 JWT 토큰을 반환합니다.

Google 플러그인 설정

플러그인은 웹 클라이언트 ID 모든 플랫폼에 필요하고 optionally iOS 클라이언트 ID iOS 전용 기능에 필요합니다. Google에 대한 주요 점:

import { SocialLogin } from '@capgo/capacitor-social-login';

await SocialLogin.initialize({
  google: {
    // Use the same Web Client ID you configured in Supabase
    webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
    
    // Optional: iOS Client ID for iOS-specific features
    iOSClientId: 'YOUR_IOS_CLIENT_ID.apps.googleusercontent.com',
    
    // Optional: Request offline access for refresh tokens
    mode: 'offline'
  }
});

Google에서

  • __CAPGO_KEEP_0__를 사용하세요. 웹 클라이언트 ID (안드로이드/아이오스 클라이언트 ID가 아닌) webClientId 필드
  • Capgo 플러그인은 웹 클라이언트 ID만으로 모든 플랫폼에서 작동합니다.
  • Capgo iOSClientId 는 옵션입니다. iOS 전용 Google 기능을 위해만 사용됩니다.

Apple 플러그인 구성

Apple 구성은 iOS와 Android 간에 다릅니다.

iOS (네이티브 애플 로그인):

await SocialLogin.initialize({
  apple: {
    // No additional configuration needed for iOS
    // The plugin uses the native Apple Sign-In capability
  }
});

Android/Web (서비스 ID가 필요합니다.)

await SocialLogin.initialize({
  apple: {
    clientId: 'YOUR_SERVICE_ID', // The Service ID from Apple Developer Portal
    redirectUrl: 'https://your-project-ref.supabase.co/auth/v1/callback'
  }
});

Apple에 대한 주요 점:

  • iOS는 native Sign in with Apple을 사용합니다 (추가 설정이 필요하지 않습니다)
  • Android/Web는 Apple Developer Portal에서 생성한 Service ID를 필요로 합니다
  • The redirectUrl __CAPGO_KEEP_0__는 Apple Developer Portal와 Supabase에서 구성한 내용과 일치해야 합니다

Facebook 플러그인 구성

Facebook는 App ID와 Client Token이 필요합니다:

await SocialLogin.initialize({
  facebook: {
    appId: 'YOUR_FACEBOOK_APP_ID',        // From Facebook Developer Dashboard
    clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN', // From Facebook Developer Dashboard
    
    // Optional: Use Facebook Limited Login (for enhanced privacy)
    limitedLogin: false // See our Facebook setup guide for important Limited Login details
  }
});

Facebook에 대한 주요 점:

  • Supabase에서 구성한 App ID를 사용하세요
  • Client Token은 Facebook App의 기본 설정에서 찾을 수 있습니다
  • limitedLogin: true iOS에서만 Facebook의 privacy-focused Limited Login 기능을 활성화합니다
  • 중요: See our Facebook 설정 가이드 상세한 Limited Login 정보, ATT 고려 사항 포함

플러그인 초기화 완료

모든 제공자 초기화하는 방법입니다:

import { SocialLogin } from '@capgo/capacitor-social-login';

export async function initializeSocialLogin() {
  await SocialLogin.initialize({
    google: {
      webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
      mode: 'offline'
    },
    facebook: {
      appId: 'YOUR_FACEBOOK_APP_ID',
      clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN',
    },
    apple: {
      // iOS: no config needed
      // Android/Web: uncomment the lines below
      // clientId: 'YOUR_SERVICE_ID',
      // redirectUrl: 'https://your-project-ref.supabase.co/auth/v1/callback'
    }
  });
}

중요한 주의 사항:

  • 앱이 시작될 때 한번만 호출하세요. initialize() 각 로그인 전에는 호출하지 마세요. 사용할 계획인 제공자만 구성하면 됩니다.
  • 이 인증 정보는 원래 제공자에서 가져옵니다.
  • 원래 제공자 원래 제공자__CAPGO_KEEP_0__이 아닌 Supabase에서
  • Supabase 제공자 인증서를 Supabase에서 구성한 것과 일치시켜주세요

5단계: Supabase 클라이언트 설정

Supabase 클라이언트를 설치하세요:

npm install @supabase/supabase-js

Supabase 서비스를 생성하세요:

// services/supabase.ts
import { createClient } from '@supabase/supabase-js';

const supabaseUrl = 'https://your-project-ref.supabase.co';
const supabaseKey = 'your-anon-public-key';

export const supabase = createClient(supabaseUrl, supabaseKey, {
  auth: {
    autoRefreshToken: true,
    persistSession: true,
    detectSessionInUrl: false,
  },
});

6단계: 인증 흐름 구현

Supabase와 Capacitor의 인증 서비스를 생성하세요:

// services/auth.ts
import { SocialLogin } from '@capgo/capacitor-social-login';
import { supabase } from './supabase';

export class AuthService {
  
  async initializeSocialLogin() {
    await SocialLogin.initialize({
      google: {
        webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
      },
      facebook: {
        appId: 'YOUR_FACEBOOK_APP_ID',
        clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN',
      },
      apple: {} // iOS configuration
    });
  }

  async signInWithGoogle() {
    try {
      const result = await SocialLogin.login({
        provider: 'google',
        options: {
          scopes: ['email', 'profile']
        }
      });

      const googleResult = result.result;
      if (!googleResult) {
        throw new Error('Google login failed');
      }

      // GoogleLoginResponse is a union type - check responseType to determine flow
      if (googleResult.responseType === 'online') {
        // Online mode: use idToken directly with Supabase
        const { data, error } = await supabase.auth.signInWithIdToken({
          provider: 'google',
          token: googleResult.idToken!,
        });
        if (error) throw error;
        return data;
      } else {
        // Offline mode: exchange serverAuthCode on your backend
        // Your backend should exchange the code for tokens and create a Supabase session
        const response = await fetch('/api/auth/google', {
          method: 'POST',
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify({ serverAuthCode: googleResult.serverAuthCode })
        });
        return response.json();
      }
    } catch (error) {
      console.error('Google sign-in error:', error);
      throw error;
    }
  }

  async signInWithApple() {
    try {
      const result = await SocialLogin.login({
        provider: 'apple',
        options: {
          scopes: ['email', 'name']
        }
      });

      const { data, error } = await supabase.auth.signInWithIdToken({
        provider: 'apple',
        token: result.result?.identityToken!,
      });

      if (error) throw error;
      return data;
    } catch (error) {
      console.error('Apple sign-in error:', error);
      throw error;
    }
  }

  async signInWithFacebook() {
    try {
      const result = await SocialLogin.login({
        provider: 'facebook',
        options: {
          permissions: ['email', 'public_profile']
        }
      });

      const fbResult = result.result;
      if (!fbResult?.accessToken?.token) {
        throw new Error('Facebook login failed - no access token received');
      }

      // Facebook uses accessToken for Supabase authentication
      const { data, error } = await supabase.auth.signInWithIdToken({
        provider: 'facebook',
        token: fbResult.accessToken.token,
      });

      if (error) throw error;
      return data;
    } catch (error) {
      console.error('Facebook sign-in error:', error);
      throw error;
    }
  }

  async signOut() {
    // Sign out from Supabase
    await supabase.auth.signOut();
    
    // Optionally sign out from social providers
    await SocialLogin.logout({
      provider: 'google' // or 'apple', 'facebook'
    });
  }

  getCurrentUser() {
    return supabase.auth.getUser();
  }

  onAuthStateChange(callback: (event: string, session: any) => void) {
    return supabase.auth.onAuthStateChange(callback);
  }
}

export const authService = new AuthService();

7단계: 앱에 구현

서비스를 초기화하고 인증을 처리하세요:

// main.ts or app component
import { authService } from './services/auth';

async function initializeApp() {
  await authService.initializeSocialLogin();
  
  // Listen to auth state changes
  authService.onAuthStateChange((event, session) => {
    if (event === 'SIGNED_IN') {
      console.log('User signed in:', session.user);
      // Redirect to authenticated area
    } else if (event === 'SIGNED_OUT') {
      console.log('User signed out');
      // Redirect to login
    }
  });
}

initializeApp();

로그인 버튼을 UI에 생성하세요:

// Login component
async function handleGoogleLogin() {
  try {
    const user = await authService.signInWithGoogle();
    console.log('Signed in with Google:', user);
  } catch (error) {
    console.error('Login failed:', error);
  }
}

async function handleAppleLogin() {
  try {
    const user = await authService.signInWithApple();
    console.log('Signed in with Apple:', user);
  } catch (error) {
    console.error('Login failed:', error);
  }
}

async function handleFacebookLogin() {
  try {
    const user = await authService.signInWithFacebook();
    console.log('Signed in with Facebook:', user);
  } catch (error) {
    console.error('Login failed:', error);
  }
}

async function handleLogout() {
  try {
    await authService.signOut();
    console.log('Signed out successfully');
  } catch (error) {
    console.error('Logout failed:', error);
  }
}

8단계: 플랫폼별 설정

iOS 설정

iOS 세부 설정 지침을 보려면 플랫폼별 지침을 참조하십시오:

빠른 요약 - 추가 ios/App/App/Info.plist:

<!-- Google Sign-In URL scheme -->
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>YOUR_REVERSED_CLIENT_ID</string>
    </array>
  </dict>
</array>

<!-- Apple Sign-In capability -->
<key>com.apple.developer.applesignin</key>
<array>
  <string>Default</string>
</array>

Xcode 프로젝트 구성 포함한 iOS 설정 지침을 완전하게 따라하기 위해 링크된 지침을 참조하십시오.

Android 구성

Android 설정에 대한 자세한 설명은 플랫폼별 안내서를 참조하십시오:

Android 설정의 필수 항목:

1. SHA-1 지문을 얻으십시오 (Google에 필요함):

# For debug builds (development)
cd android
./gradlew signingReport

# Look for the SHA1 fingerprint under "Variant: debug"
# Add this SHA1 to your Google Cloud Console Android OAuth client

2. AndroidManifest.xml 구성 - 추가 android/app/src/main/AndroidManifest.xml:

<!-- Internet permission -->
<uses-permission android:name="android.permission.INTERNET" />

<!-- Facebook configuration -->
<meta-data 
  android:name="com.facebook.sdk.ApplicationId" 
  android:value="@string/facebook_app_id"/>
<meta-data 
  android:name="com.facebook.sdk.ClientToken" 
  android:value="@string/facebook_client_token"/>

3. Facebook 리소스를 추가하세요android/app/src/main/res/values/strings.xml:

<string name="facebook_app_id">YOUR_FACEBOOK_APP_ID</string>
<string name="facebook_client_token">YOUR_FACEBOOK_CLIENT_TOKEN</string>

구글 플레이 서비스 및 패키지 이름 설정을 포함한 Android 구성에 대한 완전한 링크된 플랫폼 가이드를 따르세요.

9단계: 인증된 사용자와 함께 Supabase 데이터베이스 사용

사용자가 인증되면, 사용자 인증 후 Supabase의 데이터베이스를 사용할 수 있습니다. Row Level Security (RLS)도 사용할 수 있습니다.

// Example: Fetch user profile
async function getUserProfile() {
  const { data: user } = await supabase.auth.getUser();
  
  if (user) {
    const { data, error } = await supabase
      .from('profiles')
      .select('*')
      .eq('id', user.user.id)
      .single();
    
    return data;
  }
}

// Example: Update user profile
async function updateUserProfile(updates: any) {
  const { data: user } = await supabase.auth.getUser();
  
  if (user) {
    const { data, error } = await supabase
      .from('profiles')
      .update(updates)
      .eq('id', user.user.id);
    
    return data;
  }
}

중요한 보안 고려 사항

  1. 敏感 키를 클라이언트에 노출하지 마세요 in your client code
  2. 설정 Row Level Security를 활성화하세요
  3. __CAPGO_KEEP_0__ Supabase에서
  4. 토큰을 유효로 하기 위해 필요한 경우 백엔드에서 토큰을 확인하세요
  5. Supabase와 자동으로 토큰을 갱신하세요 일반적인 문제 해결

토큰 불일치 오류

소셜 로그인 플러그인과 Supabase의 OAuth 제공자 설정이 일치하는지 확인하세요

  • 리다이렉트 URL이 올바르게 구성되어 있는지 확인하세요
  • 플랫폼별 문제

iOS: Apple Developer 설정과 일치하는지 확인하세요

  • Android: Google Console에 올바르게 SHA1 지문을 추가했는지 확인하세요
  • __CAPGO_KEEP_0__

인증 흐름 중단

  • 네트워크 문제에 대한 적절한 오류 처리를 구현하세요.
  • 인증 중 로딩 상태를 추가하세요.

결론

현재 Supabase의 강력한 백엔드와 네이티브 소셜 로그인 기능을 결합한 완전한 인증 시스템을 구축했습니다. 이 설정은 다음과 같은 기능을 제공합니다.

  • 네이티브 소셜 인증을 위한 안전한 인증
  • 토큰 관리를 위한 매끄러운 통합
  • 실시간 데이터베이스 통합
  • 플랫폼 간 호환성

Supabase와 Capgo Social Login 플러그인을 결합하면 Capacitor 앱에 대한 강력하고 확장 가능한 인증 솔루션을 제공합니다.

다음과 같은 더 고급 기능을 구현하려면 다단 인증 또는 사용자 선언 Cloudflare, Capacitor, GitHub, Capgo, check out the .

Keep going from Setup Supabase Authentication with Capacitor Social Login Plugin

Social Login plugin Setup Supabase Authentication with Capacitor Social Login Plugin Capacitor @capgo/capacitor-social-login for the implementation detail in @capgo/capacitor-social-login, @capgo/capacitor-passkey implementation 세부 정보를 위한 @capgo/capacitor-passkey @capgo/capacitor-native-biometric implementation 세부 정보를 위한 @capgo/capacitor-native-biometric 두 단계 인증 두 단계 인증의 implementation 세부 정보, 그리고 SSO (기업) SSO (기업)의 implementation 세부 정보.

Capacitor 앱에 대한 실시간 업데이트

Capgo을 통해 웹-layer 버그를 수정할 때, 앱 스토어 승인 기다리지 않고 바로 배포하세요. 사용자는 배경에서 업데이트를 받으며, 네이티브 변경 사항은 일반적인 검토 경로를 유지합니다.

시작하기

최근 블로그에서

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.