ソーシャルコネクターを開発するためのステップバイステップガイド
最も速く始める方法は、既存の公式コネクターのコードをコピーし、ニーズに合わせて修正することです。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: サードパーティのソーシャルプラットフォームの認可 (Authorization) URI を生成します。GitHub の場合は次のようになります:https://github.com/login/oauth/authorize?client_id={clientId}&redirect_uri={redirectUri}&state={state}。ターゲットのソーシャルプラットフォームの開発者ドキュメントを参照して、正しい URI を取得してください。authorizationCallbackHandler: 認可 (Authorization) コールバック URI で返されたパラメーター値を保護し、認可 (Authorization)codeを抽出し、潜在的なエラーを処理します。getAccessToken: 認可 (Authorization)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 管理コンソールに移動すると、ソーシャルコネクターのリストに表示されるはずです。
- Console > Sign-in experience > Sign-up and sign-in > ソーシャルサインインでコネクターを設定します。そして、「ライブプレビュー」機能を使用してデモアプリで試してみてください。