본문으로 건너뛰기

capgo/capacitor-social-login으로 @capgo/capacitor을 마이그레이션하는 Ionic Auth Connect

Capgo 소셜 로그인은 Ionic Auth Connect와 제공자-자연적인 OAuth2 흐름을 사용하여 Google, Apple, Facebook, 기타 식별자 제공자와 같은 제공자-자연적인 OAuth2 흐름을 사용합니다. iOS, Android, Web에서 작동합니다.

이것이 왜 작동하는가

이것이 작동하는 이유

플러그인은 Ionic Auth Connect와 호환되는 Auth Connect 호환성 wrapper를 포함합니다. SocialLoginAuthConnect이 wrapper는 Ionic Auth Connect와 호환되는 제공자 ID를 built-in OAuth2 엔진으로 mapping합니다. 이름이 Ionic Auth Connect와 호환되는 이름인 auth0, azureIonic Auth Connect와 호환되는 제공자 ID okta.

설치

설치
터미널 창
bun add @capgo/capacitor-social-login
bunx cap sync

수입을 교체

수입 교체
// Before
import { AuthConnect } from '@ionic-enterprise/auth-connect';
// After
import { SocialLoginAuthConnect } from '@capgo/capacitor-social-login';

제공자 초기화

제공자 초기화

Ionic Auth Connect가 사용한 동일한 제공자 ID를 원할 때는 authConnect 클립보드에 복사

await SocialLoginAuthConnect.initialize({
authConnect: {
auth0: {
domain: 'https://your-tenant.auth0.com',
clientId: 'your-auth0-client-id',
redirectUrl: 'myapp://oauth/auth0',
audience: 'https://your-api.example.com',
},
azure: {
tenantId: 'common',
clientId: 'your-azure-client-id',
redirectUrl: 'myapp://oauth/azure',
},
cognito: {
domain: 'https://your-domain.auth.region.amazoncognito.com',
clientId: 'your-cognito-client-id',
redirectUrl: 'myapp://oauth/cognito',
},
okta: {
issuer: 'https://dev-12345.okta.com/oauth2/default',
clientId: 'your-okta-client-id',
redirectUrl: 'myapp://oauth/okta',
},
onelogin: {
issuer: 'https://your-tenant.onelogin.com/oidc/2',
clientId: 'your-onelogin-client-id',
redirectUrl: 'myapp://oauth/onelogin',
},
},
});

지원되는 제공자 ID

지원되는 제공자 ID 섹션
  • auth0
  • azure
  • cognito
  • okta
  • onelogin

로그인, 로그아웃 및 토큰 접근

로그인, 로그아웃 및 토큰 접근 섹션
const result = await SocialLoginAuthConnect.login({
provider: 'auth0',
});
const status = await SocialLoginAuthConnect.isLoggedIn({
provider: 'auth0',
});
const code = await SocialLoginAuthConnect.getAuthorizationCode({
provider: 'auth0',
});
await SocialLoginAuthConnect.logout({
provider: 'auth0',
});

제공자별 예제

제공자별 예제 섹션
await SocialLoginAuthConnect.initialize({
authConnect: {
auth0: {
domain: 'https://your-tenant.auth0.com',
clientId: 'your-auth0-client-id',
redirectUrl: 'myapp://oauth/auth0',
audience: 'https://your-api.example.com',
},
},
});
const auth0Result = await SocialLoginAuthConnect.login({
provider: 'auth0',
});
console.log(auth0Result.result.idToken);
await SocialLoginAuthConnect.initialize({
authConnect: {
azure: {
tenantId: 'common',
clientId: 'your-azure-client-id',
redirectUrl: 'myapp://oauth/azure',
},
},
});
const azureResult = await SocialLoginAuthConnect.login({
provider: 'azure',
});
console.log(azureResult.result.resourceData);

__CAPGO_KEEP_1__

__CAPGO_KEEP_2__
await SocialLoginAuthConnect.initialize({
authConnect: {
cognito: {
domain: 'https://your-domain.auth.region.amazoncognito.com',
clientId: 'your-cognito-client-id',
redirectUrl: 'myapp://oauth/cognito',
},
},
});
const cognitoResult = await SocialLoginAuthConnect.login({
provider: 'cognito',
});
console.log(cognitoResult.result.idToken);

__CAPGO_KEEP_3__

__CAPGO_KEEP_4__
await SocialLoginAuthConnect.initialize({
authConnect: {
okta: {
issuer: 'https://dev-12345.okta.com/oauth2/default',
clientId: 'your-okta-client-id',
redirectUrl: 'myapp://oauth/okta',
},
},
});
const oktaResult = await SocialLoginAuthConnect.login({
provider: 'okta',
});
console.log(oktaResult.result.resourceData);

__CAPGO_KEEP_5__

__CAPGO_KEEP_6__
await SocialLoginAuthConnect.initialize({
authConnect: {
onelogin: {
issuer: 'https://your-tenant.onelogin.com/oidc/2',
clientId: 'your-onelogin-client-id',
redirectUrl: 'myapp://oauth/onelogin',
},
},
});
const oneloginResult = await SocialLoginAuthConnect.login({
provider: 'onelogin',
});
console.log(oneloginResult.result.idToken);

__CAPGO_KEEP_7__

__CAPGO_KEEP_8__

각 프리셋은 기본 OAuth2 구성으로 생성됩니다. domain 또는 issuertenant가 사용하는 커스텀 엔드포인트가 있다면 직접 override하세요:

await SocialLoginAuthConnect.initialize({
authConnect: {
onelogin: {
issuer: 'https://your-tenant.onelogin.com/oidc/2',
clientId: 'your-onelogin-client-id',
redirectUrl: 'myapp://oauth/onelogin',
authorizationBaseUrl: 'https://your-tenant.onelogin.com/oidc/2/auth',
accessTokenEndpoint: 'https://your-tenant.onelogin.com/oidc/2/token',
resourceUrl: 'https://your-tenant.onelogin.com/oidc/2/me',
logoutUrl: 'https://your-tenant.onelogin.com/oidc/2/logout',
},
},
});

직접 OAuth2 구성

제목: 직접 OAuth2 구성

프리셋을 사용하지 않으려면, 일반 OAuth2 문서에서 제공자들을 직접 구성하세요:

  1. 호환성 레이어는 OAuth2 기반입니다. 이것은 제공자 이름만 유지하고, 이온의 네이티브 구현 세부 사항은 유지하지 않습니다.

  2. __CAPGO_KEEP_0__ 리프레시 토큰은 스코프에依存합니다 offline_access 리프레시 토큰이 필요할 때는 리퀘스트 또는 제공자에 특정한 동등한 항목을 사용하세요.

  3. 커스텀 엔드포인트는 프리셋을 오버라이드 할 수 있습니다 프리셋이 정확하지 않다면, 오직 다른 엔드포인트만 오버라이드하세요.

  4. 직접 oauth2 엔트리들은 우선합니다 만약에, 직접 authConnect.auth0oauth2.auth0,를 정의한다면, 직접 oauth2 설정은 우선합니다.

관련 문서