ソーシャルコネクター開発のステップバイステップガイド
最も素早く始める方法は、既存の公式コネクターのコードをコピーし、ニーズに合わせて修正することです。ここでは 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 で返されるパラメーター値を安全に処理し、認可codeを抽出し、発生しうるエラーを処理します。getAccessToken: 認可codeをアクセストークン (アクセス トークン) に交換します。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、docker、またはソースコードからビルドすることも可能です。詳細は こちら のドキュメントを参照してください。
- カスタムコネクターを Logto インスタンスにリンクする:CLI を使ってコネクターのシンボリックリンクを Logto インスタンスに作成します。詳細はこちら。
cd logto
npx @logto/cli connector link -p . - コネクターをリンクした後、
<logto-root-path>/packages/core/connectorsフォルダーに表示されるはずです。 - Logto インスタンスを再起動し、Logto 管理コンソールにアクセスすると、ソーシャルコネクター一覧に表示されていることを確認できます。
-
コンソール > サインイン & アカウント > サインアップとサインイン
ソーシャルサインインでコネクターを設定します。そして、「ライブプレビュー」機能を使ってデモアプリで試してみてください。