소셜 커넥터 개발 단계별 가이드
가장 빠르게 시작하는 방법은 기존의 공식 커넥터 코드를 복사하여 필요에 맞게 수정하는 것입니다. GitHub 커넥터를 예로 들어보겠습니다.
1단계: 기존 커넥터 패키지 복제하기
커넥터 소스 폴더에는 다음과 같은 파일들이 있습니다:
index.ts
: 커넥터의 메인 엔트리 파일.constant.ts
: 커넥터에서 사용되는 상수들.types.ts
: 커넥터에서 사용되는 TypeScript 타입들.index.test.ts
: 커넥터의 테스트 케이스.mock.ts
: 커넥터 테스트 케이스에서 사용되는 모의 데이터.
이 파일들 외에도 커넥터를 설명하는 README.md
파일, logo.svg
(더 나은 다크 모드 사용자 경험을 위해 선택적으로 logo-dark.svg
), 그리고 npm 패키지 정보를 정의하는 package.json
파일을 제공해야 합니다.
2단계: 메인 엔트리 파일 수정하기 (index.ts)
index.ts
파일에서는 대부분의 커넥터 로직을 찾을 수 있습니다. 일반적으로 구현해야 하는 4개의 함수가 있습니다:
getAuthorizationUri
: 타사 소셜 플랫폼을 위한 인가 URI를 생성합니다. GitHub의 경우:https://github.com/login/oauth/authorize?client_id={clientId}&redirect_uri={redirectUri}&state={state}
. 대상 소셜 플랫폼의 개발자 문서를 참조하여 올바른 URI를 얻으세요.authorizationCallbackHandler
: 인가 콜백 URI에서 반환된 매개변수 값을 보호하고, 인가코드
를 추출하며 잠재적인 오류를 처리합니다.getAccessToken
: 인가코드
를 액세스 토큰으로 교환합니다.getUserInfo
: 액세스 토큰을 사용하여 타사 소셜 플랫폼에서 사용자 정보를 가져옵니다.
Logto 커넥터 키트에서 대부분의 다른 일반적인 로직이 처리되므로 작업이 더 쉬워질 것입니다.
마지막으로, 파일의 끝부분에서 GitHub 커넥터와 동일한 코드 구조를 따라 커넥터 객체를 내보내기만 하면 됩니다.
const createGithubConnector: CreateConnector<SocialConnector> = async ({ getConfig }) => {
return {
metadata: defaultMetadata,
type: ConnectorType.Social,
configGuard: githubConfigGuard,
getAuthorizationUri: getAuthorizationUri(getConfig),
getUserInfo: getUserInfo(getConfig),
};
};
3단계: 커넥터 테스트하기
단위 테스트
먼저, 몇 가지 단위 테스트 케이스를 작성하고 기본 기능이 예상대로 작동하는지 확인하세요.
로컬 테스트
- 로컬 환경에서 Logto 설정하기: Logto는 로컬에서 실행할 수 있는 여러 가지 방법을 제공합니다. CLI, 도커를 사용하거나 소스 코드에서 빌드할 수 있습니다. 자세한 내용을 확인하세요.
- 사용자 정의 커넥터를 Logto 인스턴스에 연결하기: CLI를 사용하여 커넥터의 심볼릭 링크를 Logto 인스턴스에 생성하세요. 자세한 내용.
cd logto
npx @logto/cli connector link -p . - 커넥터를 연결한 후,
<logto-root-path>/packages/core/connectors
폴더에서 확인할 수 있습니다. - Logto 인스턴스를 재시작하고, Logto 관리자 콘솔로 이동하여 소셜 커넥터 목록에서 확인할 수 있습니다.
-
콘솔 > 로그인 경험 > 가입 및 로그인
소셜 로그인에서 커넥터를 구성하세요. 그리고 "라이브 미리보기" 기능을 사용하여 데모 앱에서 시도해보세요.