본 콘텐츠로 바로 가기
튜토리얼

Capacitor와 함께 Supabase 인증을 설정하는 방법

Capgo의 사회적 로그인 플러그인을 사용하여 Capacitor 앱에서 부드러운 Google, Apple 및 Facebook 인증을 통합하는 방법을 알아보세요.

기사 기여

마틴 도나디우

작가

발레리아

리뷰어

조던

편집기

Capacitor와 함께 Supabase를 사용하여 Capacitor 소셜 로그인 플러그인을 설정하는 방법

__CAPGO_KEEP_0__ 앱에서 소셜 로그인 플러그인을 사용하여 Supabase 인증을 설정하는 방법 모바일 앱에서 인증을 설정하는 것은 복잡할 수 있지만 Supabase와 __CAPGO_KEEP_0__ 소셜 로그인 플러그인을 combination하는 것은 간단합니다. 이 튜토리얼은 Supabase와 __CAPGO_KEEP_0__ 앱에서 Google, Apple, Facebook와 같은 소셜 인증을 통합하는 방법을 안내합니다. Supabase와 소셜 로그인을 사용하는 이유 Capgo Social Login plugin Supabase는 robust한 백엔드-어스-어 서비스를 제공하며, @Capacitor/__CAPGO_KEEP_1__-social-login 플러그인은 iOS, Android, 웹 플랫폼에서 native한 소셜 인증을 제공합니다. Supabase와 더 긴밀한 통합을 위해

Supabase

Supabase는 robust한 백엔드-어스-어 서비스를 제공하며, @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-social-login 플러그인은 iOS, Android, 웹 플랫폼에서 native한 소셜 인증을 제공합니다. Supabase와 더 긴밀한 통합을 위해 Capacitor @capgo/capacitor-social-login Capacitor @capgo/capacitor-supabase @__CAPGO_KEEP_0__은 native auth helpers 및 JWT 접근을 제공합니다. 함께, 그들은 다음과 같은 것을 제공합니다:

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

사전 요구 사항

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

  • Capacitor 프로젝트가 설정된 상태
  • Supabase 계정 및 프로젝트
  • 선택한 사회 제공자 (Google, Apple, Facebook) 의 개발자 계정

Step 1: Capacitor와 Supabase를 사용한 Social Login 설정

첫 번째로 Capgo Social Login 플러그인을 설치하세요:

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

Capacitor와 Supabase를 사용한 Social Login 플러그인 설정 방법을 참조하세요: Social Login 그리고 Supabase 플랫폼별 설정 방법을 참조하세요.

Step 2: Supabase 프로젝트 설정

Capacitor와 Supabase를 사용한 Social Login 설정

  1. Capacitor와 Supabase를 사용한 Social Login 플러그인 설정 방법을 참조하세요::

    • Capacitor와 Supabase를 사용한 Social Login 플러그인 설정 방법을 참조하세요: Capacitor와 Supabase를 사용한 Social Login 플러그인 설정 방법을 참조하세요: 및 가입/로그인
    • 클릭 “New Project”
    • 조직 선택
    • 프로젝트 이름 프로젝트 이름 (예: "MyApp Auth") 데이터베이스 비밀번호 설정
    • (이 비밀번호를 안전하게 저장하세요) 지역 선택 __CAPGO_KEEP_0__
    • __CAPGO_KEEP_1__ __CAPGO_KEEP_2__ 사용자에게 가장 가까운 옵션을 선택하세요.
    • 클릭 “Create new project”
  2. 프로젝트 인증 정보를 받으세요:

    • 프로젝트가 생성되면 Settings > API
    • Copy your Project URL (e.g., https://your-project-ref.supabase.co)
    • Copy your anon public API key
    • 앱에서 나중에 사용하기 위해 저장하세요

인증 설정을 구성하세요

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

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

    • 아래 SMTP 설정, 이메일 제공업체를 구성하여
    • 이메일 확인 및 비밀번호 재설정 활성화
    • 개발 환경에서 내장 이메일 서비스를 사용할 수 있습니다

사회 인증 제공자 활성화

  1. 제공자 섹션에 접근:
    • Capgo 설치 Authentication > Providers
    • Supabase
    • available social providers Enable toggle and configuration options

Step 3: Supabase에서 Social Provider를 설정하는 방법

Capacitor

Google Authentication

Google OAuth

Capacitor 구글 인증 설정

이 안내서에서는 다음과 같은 내용을 다룹니다.

  • 구글 클라우드 프로젝트를 생성하는 방법
  • 웹, iOS, Android를 위한 OAuth 2.0 인증을 설정하는 방법
  • consent 화면을 설정하는 방법
  • 구글 클라우드 프로젝트에서 필요한 Client ID 및 Secret를 얻는 방법

구글 설정을 완료한 후 Supabase에서 설정하는 방법

  1. Supabase에서 Google 제공자를 활성화하는 방법:
    • Supabase 대시보드에서 Authentication > Providers로 이동하세요. 구글을 찾으세요.
    • Google Google 그리고 토글을 켜세요. 켜기
    • 구성을 입력하세요.
      • Client ID: Google OAuth에서 사용하는 Web Google Cloud Console에서 Client ID를 가져옵니다.
      • Client Secret: Google OAuth에서 사용하는 Web Client Secret
      • Redirect URL: https://your-project-ref.supabase.co/auth/v1/callback (자동 채우기)
    • 클릭 “Save”

중요중요한 정보입니다. Web Client IDWeb Client Secret 모바일 앱을 개발하고 있더라도 Supabase에서 사용하세요. 모바일 클라이언트 ID는 플러그인 구성에서 별도로 사용됩니다.

애플 인증을 Supabase에 설정하는 방법

애플 인증을 위한 인증서를 받으세요:

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

이 안내서에서는 다음과 같은 내용을 다룹니다.

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

애플 설정을 완료한 후 Supabase에서 설정하세요:

  1. Supabase에서 애플 제공자 활성화:
    • Authentication > Providers로 이동 활성화 and toggle 애플 ON
    • 설정 정보를 입력하세요:
      • Client ID: 서비스 ID 식별자 (예: com.yourapp.signin)
      • Client Secret: Apple 개인 키를 사용하여 JWT를 생성하세요 (see Apple Supabase 문서 에서 JWT 형식)
      • Redirect URL: https://your-project-ref.supabase.co/auth/v1/callback (자동으로 입력됨)
    • 클릭 “저장”

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

Supabase에서 Facebook 인증 설정하기

Facebook 인증을 위한 인증서를 받으세요:

Facebook 인증 설정을 위한 완전한 설정 가이드를 따르세요: Facebook 인증 설정

이 가이드는 다음과 같은 내용을 다룹니다:

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

Facebook 설정을 완료한 후 Supabase에서 설정하세요:

  1. Supabase에서 Facebook 제공자를 활성화하세요:
    • 다음으로 이동하세요: 인증 > 제공자 Facebook 제공자를 활성화하세요 Facebook 켜기
    • 구성 정보를 입력하세요:
      • Client ID: Facebook 앱 ID
      • Client Secret: Facebook 앱 시크릿 키
      • 리다이렉트 URL: https://your-project-ref.supabase.co/auth/v1/callback (자동으로 입력됨)
    • 클릭 “저장”

중요(페이지/영역: 버그 보너스 프로그램 페이지. 역할: UI 레이블. 표시되는 곳: page bug-bounty.astro. 메시지 키 `bug_bounty_important_label` (버그 보너스 중요 레이블).)https://your-project-ref.supabase.co/auth/v1/callback: Supabase 콜백 URL ( )을 Facebook 앱의 유효한 OAuth 리다이렉트 URI

Facebook 로그인 설정에서 찾을 수 있습니다.

중요한 Supabase 구성 참고 사항들입니다. (중요한 Supabase 구성 참고 사항들입니다.)

  • 인증 설정 후 RLS를 테이블에 활성화하세요
  • Go to 데이터베이스 > 테이블 테이블당 RLS 활성화 데이터 접근을 인증된 사용자에 따라 제어하는 정책을 생성하세요
  • 사용자 관리:

인증된 사용자를 보기

  • 인증 > 사용자 인증 이벤트를 모니터링하세요
  • 인증 > 로그 RLS는 데이터베이스의 데이터 접근을 제어하는 기능입니다.
  • Capgo Capacitor

Authentication > 이메일 템플릿

  • 설정
  • 테스트 Supabase의 내장 인증 테스트 도구를 사용하세요 Authentication > 사용자 사용자 초대 이메일 흐름을 테스트하세요
  • 로그 인증 오류를 확인하세요 Logs

Step 4: Social Login 플러그인 구성

Supabase가 구성되면, 해당 인증 정보와 함께 Social Login 플러그인을 설정해야 합니다. 중요: 플러그인은 OAuth 인증 정보를 필요로 합니다. 원래 제공자 (Supabase가 아닌)

Supabase는 서버측 인증을 처리합니다.

인증 흐름

  1. 구성하기 전에 흐름을 이해하세요: 플러그인은 사회 제공자 (Google/Apple/Facebook)와 직접 인증합니다.
  2. 플러그인은 제공자로부터 토큰을 받습니다. 액세스 토큰, ID 토큰
  3. 애플리케이션은 다음 토큰을 보냅니다. Supabase에 사용합니다. signInWithIdToken()
  4. Supabase는 제공자와 토큰을 검증하고 사용자 세션을 생성합니다. Supabase는 인증된 요청을 위한 애플리케이션의 JWT 토큰을 반환합니다.
  5. Google 플러그인 구성 플러그인은 모든 플랫폼에 대해 Web Client ID가 필요하며 iOS Client ID를 선택적으로 필요로 합니다.

iOS에 특정한 기능을 사용하려면 iOS Client ID가 필요합니다.

iOS Client ID는 iOS에 특정한 기능을 사용하려면 필요합니다. iOS Client ID는 iOS에 특정한 기능을 사용하려면 필요합니다. iOS Client ID는 iOS에 특정한 기능을 사용하려면 필요합니다. iOS Client ID는 iOS에 특정한 기능을 사용하려면 필요합니다. iOS Client ID는 iOS에 특정한 기능을 사용하려면 필요합니다.

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'
  }
});

구글의 주요 점:

  • Web Client ID (안드로이드/아이오스 클라이언트 ID가 아닌) 필드 webClientId Web Client ID만으로도 모든 플랫폼에서 플러그인을 작동시킬 수 있습니다.
  • iOS
  • Apple Plugin Configuration iOSClientId Apple 플러그인 구성

iOS와 Android의 Apple 구성이 다릅니다.

iOS

(네이티브 애플 시그니 인): __CAPGO_KEEP_0__

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

Android/Web (requires Service 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는 Sign in with Apple을 사용합니다 (추가 설정이 필요하지 않습니다)
  • Android/Web는 Apple Developer Portal에서 생성한 Service ID가 필요합니다
  • redirectUrl 는 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 Facebook의 privacy-focused Limited Login 기능 (iOS만)을 활성화합니다.
  • 중요: 우리의 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() 앱이 시작될 때, 로그인 전 각 로그인 전 사용할 계획인 제공자만 구성하면 됩니다.
  • 한 번
  • 이 자격 증명은 Supabase에서 아닌 원래 제공자에서 나옵니다. 원래 제공자Supabase에서 아닌 원래 제공자
  • Supabase에서 제공자 자격 증명이 맞는지 확인하세요.

5단계: Supabase Client 설정

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단계: 인증 흐름 구현

인증 서비스를 생성하여 두 가지를结合합니다.

// 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>

iOS 설정을 완벽하게 구성하기 위해 연결된 지침을 따르십시오. Xcode 프로젝트 구성 포함.

안드로이드 구성

자세한 안드로이드 설정 지침을 보려면 플랫폼별 지침을 참조하십시오.

안드로이드 설정의 필수 항목:

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>

실시간 업데이트 제품 페이지에서 동적 라벨로

Google Play Services 설정 및 패키지 이름 구성과 같은 Android 구성에 대한 완전한 링크된 플랫폼 지침을 따르세요.

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

// 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;
  }
}

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

  1. 중요한 보안 고려 사항 in your client code
  2. 환경 변수를 사용하세요 구성에 대한 설정
  3. Row Level Security를 활성화하세요 Supabase에서
  4. 토큰을 검증하세요 백엔드에서 필요할 경우
  5. 토큰을 자동으로 갱신하세요 Supabase와

일반적인 문제 해결

토큰 일치 오류

  • 소셜 로그인 플러그인과 Supabase의 OAuth 제공자 구성이 일치하는지 확인하세요
  • 리다이렉트 URL이 올바르게 구성되어 있는지 확인하세요

플랫폼별 문제

  • iOS: 애플 개발자 설정과 일치하는 버전 번호를 확인하세요.
  • Android: Google Console에 올바르게 SHA1 지문을 추가하세요.

인증 흐름 중단

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

결론

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

  • 안전한 네이티브 소셜 인증
  • 무결성 토큰 관리
  • 실시간 데이터베이스 통합
  • 플랫폼 간 호환성

Supabase와 Capgo 소셜 로그인 플러그인 combination은 Capacitor 앱에 대한 강력하고 확장 가능한 인증 솔루션을 제공합니다.

더 많은 고급 기능들처럼 다중 요인 인증 또는 Capacitor live-update alternatives 비교 페이지 (parent key `alternatives_cta_questions`).Capacitor live-update alternatives 비교 페이지 (parent key `appflow_cta_questions`). Capacitor live-update alternatives 비교 페이지 (parent key `capwesome_cta_questions`). Capacitor live-update alternatives 비교 페이지 (parent key `consulting_faq_subtitle`). Appflow 비교/이동 마케팅 복사본.

Keep going from Setup Supabase Authentication with Capacitor Social Login Plugin

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

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

Capgo 앱에 대한 실시간 업데이트 설명

마틴의 인간 지원

시작하기

최신 뉴스

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