본문 바로가기

Facebook Login의 @capgo/social-login 마이그레이션

GitHub

이 가이드는 다음 단계로의 마이그레이션을 위한 상세한 안내를 제공합니다. @capacitor-community/facebook-login 대상 @capgo/capacitor-social-login. 새 플러그인은 여러 소셜 프로바이더를 지원하는 통합 API를 통해 Facebook 인증을 현대화하며, 개선된 TypeScript 지원과 강화된 기능을 제공합니다.

  1. 기존 패키지를 제거하세요:

    터미널 창
    npm uninstall @capacitor-community/facebook-login
  2. 새 패키지를 설치하세요:

    터미널 창
    npm install @capgo/capacitor-social-login
    npx cap sync
import { FacebookLogin } from '@capacitor-community/facebook-login';
import { SocialLogin } from '@capgo/capacitor-social-login';

주요 변경 사항: 새 패키지를 사용하려면 code에서 명시적인 설정이 필요합니다:

// Old package required no explicit initialization in code
// Configuration was done only in native platforms
// New package requires explicit initialization
await SocialLogin.initialize({
facebook: {
appId: 'YOUR_FACEBOOK_APP_ID', // Required for web and Android
clientToken: 'YOUR_CLIENT_TOKEN' // Required for Android
}
});

이제 로그인 메서드에서 provider 파라미터를 지원합니다:

const FACEBOOK_PERMISSIONS = ['email', 'public_profile'];
const result = await FacebookLogin.login({ permissions: FACEBOOK_PERMISSIONS });
const result = await SocialLogin.login({
provider: 'facebook',
options: {
permissions: ['email', 'public_profile'],
limitedLogin: false,
nonce: 'optional_nonce'
}
});

Response Type 변경 사항

“Response Type Changes” 섹션

응답 구조가 더 포괄적인 profile 객체를 포함하도록 개선되었습니다:

// Old response type
interface FacebookLoginResponse {
accessToken: {
applicationId: string;
userId: string;
token: string;
expires: string;
};
recentlyGrantedPermissions: string[];
recentlyDeniedPermissions: string[];
}
// New response type
interface FacebookLoginResponse {
provider: 'facebook';
result: {
accessToken: {
token: string;
applicationId?: string;
expires?: string;
userId?: string;
permissions?: string[];
declinedPermissions?: string[];
} | null;
idToken: string | null;
profile: {
userID: string;
email: string | null;
friendIDs: string[];
birthday: string | null;
ageRange: { min?: number; max?: number } | null;
gender: string | null;
location: { id: string; name: string } | null;
hometown: { id: string; name: string } | null;
profileURL: string | null;
name: string | null;
imageURL: string | null;
};
};
}

주요 변경 사항:

  • 응답에 다음 항목이 추가되었습니다: provider 인증 제공자를 식별하는 field
  • 더 자세히 profile 추가 사용자 정보가 포함된 객체
  • 모든 소셜 로그인 제공업체에서 일관된 구조
const result = await FacebookLogin.getCurrentAccessToken();
const isLoggedIn = result && result.accessToken;
const status = await SocialLogin.isLoggedIn({
provider: 'facebook'
});
const isLoggedIn = status.isLoggedIn;
await FacebookLogin.logout();
await SocialLogin.logout({
provider: 'facebook'
});

플랫폼별 변경 사항

“플랫폼별 변경 사항” 섹션

이제 initialize 메서드를 통해 설정을 관리합니다:

// AndroidManifest.xml changes remain the same
// strings.xml become irrelevant
// Additionally initialize in your code:
await SocialLogin.initialize({
facebook: {
appId: 'your-app-id',
clientToken: 'your-client-token' // New requirement
}
});

중요: Android 인증 시 Client token이 필수입니다.

  1. iOS 설정은 AppDelegate.swift 기존과 동일합니다:
import FBSDKCoreKit
// In application:didFinishLaunchingWithOptions:
FBSDKCoreKit.ApplicationDelegate.shared.application(
application,
didFinishLaunchingWithOptions: launchOptions
)
// In application:openURL:options:
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
  1. 이 Info.plist 설정 방식은 동일합니다:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb[APP_ID]</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookClientToken</key>
<string>[CLIENT_TOKEN]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbauth</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>

주요 변경 사항

“Breaking Changes” 섹션

마이그레이션 시 주의해야 할 주요 변경 사항:

  1. 이제 명시적 초기화가 필요합니다 - 반드시 호출해야 함: initialize() 사용 전 호출 필요
  2. Response 객체 구조가 크게 변경되었습니다. - 프로필 데이터가 강화된 새로운 중첩 result 형식 적용
  3. Android에서 Client token이 필수 항목으로 변경되었습니다. - 추가 설정 필요
  4. 메서드 이름 및 파라미터 구조 변경 - 프로바이더 기반 방식
  5. 에러 핸들링 및 에러 타입이 변경되었습니다 - 더 상세한 에러 정보

새 플러그인은 다음을 제공합니다:

  • 통합된 API 여러 소셜 프로바이더(Google, Apple, Facebook) 전반에 걸쳐
  • 개선된 TypeScript 지원 더 나은 타입 정의와 함께
  • 강화된 프로필 데이터 더 많은 사용자 정보 포함
  • 활발한 유지보수 및 커뮤니티 지원
  • 일관된 에러 핸들링 모든 프로바이더 대상
  • 개선된 토큰 관리 정확한 만료 처리 포함

자세한 설정 방법은 다음을 공식 문서.

Facebook Login Migration에서 @capgo/social-login로 계속하기

“Keep going from Facebook Login Migration to @capgo/social-login” 섹션을 참조하세요

사용 중이라면 Facebook Login의 @capgo/social-login 마이그레이션 인증 및 계정 흐름을 설계할 때, 이를 다음 항목과 연결하세요: @capgo/capacitor-social-login 사용하기 @capgo/capacitor-social-login 사용 시 네이티브 기능을 위해, @capgo/capacitor-social-login @capgo/capacitor-social-login의 구현 세부 사항은, @capgo/capacitor-passkey @capgo/capacitor-passkey의 구현 세부 사항은 @capgo/capacitor-native-biometric @capgo/capacitor-native-biometric의 구현 세부 사항은, 2단계 인증 2단계 인증의 구현 세부 사항에 대해서는