数分で Logto の Web SDK を作成する
`@logto/browser` を使用して、Logto 用のカスタム SDK を作成する方法を学びます。
Logtoは、さまざまなフレームワークやプラットフォームとの統合を簡素化するために設計された、多くの公式SDKを提供するオープンソースの認証プラットフォームです。しかし、公式SDKが提供されていないプラットフォームも依然として多数存在します。
このギャップを埋めるために、Logtoは @logto/browser
という基礎的なパッケージを提供しており、これを使用して特定の要件に合わせたカスタムSDKを開発することができます。このパッケージは、JavaScriptをサポートし、ブラウザ環境で動作する限り、特定のフレームワークやプラットフォームに依存しないLogtoのコア機能を実装しています。
このガイドでは、@logto/browser を使用して React SDK を作成する手順を説明します。このSDKは、サインインフローを実装します。ブラウザで動作する他のJavaScriptベースのプラットフォーム向けにSDKを作成する場合も、同じ手順をたどることができます。
サインインフロー
始める前に、Logto のサインインフローを理解しましょう。サインインフローは以下のステップで構成されています。
- Logto へのリダイレクト: ユーザーは Logto のサインインページにリダイレクトされます。
- 認証: ユーザーは資格情報を入力し、Logto で認証します。
- アプリに戻るリダイレクト: 認証に成功すると、ユーザーは認可コードを持ってアプリにリダイレクトされます。
- コード交換: アプリは認可コードとトークンを交換します。
@logto/browser
の簡単な紹介
@logto/browser
パッケージは、Logto のコア機能を提供する LogtoClient
クラスを公開しており、サインインフローのためのメソッドを提供しています:
signIn()
: OIDC 認証URLを生成し、それにリダイレクトします。handleSignInCallback()
: コールバックURLをチェックして解析し、認可コードを抽出した後、トークンエンドポイントを呼び出してコードとトークンを交換します。isAuthenticated()
: ユーザーが認証されているかどうかをチェックします。
React SDK の作成
このSDKでは、useLogto
と useHandleSignInCallback
という2つのフックと、LogtoProvider
コンポーネントを提供します:
useLogto
: サインインフローをトリガーするsignIn
メソッドと、ユーザーが認証されているかどうかを確認するisAuthenticated
状態を提供するフックです。useHandleSignInCallback
: コールバックURLを処理し、認可コードをトークンと交換して、サインインフローを完了させるフックです。
SDK を使用するには、アプリを LogtoProvider
コンポーネントでラップし、認証状態をチェックし、サインインし、コールバックを処理する ためにフックを使用するだけです。
ステップ1: パッケージをインストールする
まず、npm や他のパッケージマネージャーを使用して @logto/browser
パッケージをインストールします:
ステップ2: React のコンテキストを定義する
プロバイダのコンテキストを定義し、次の3つの部分を含めます:
- フックで使用するためにプロバイダ内で初期化される
LogtoClient
インスタンス。 - 認証状態。
- 認証状態を設定するメソッド。
新しいファイル context.tsx
を作成し、次のコードを記述します:
ステップ3: プロバイダを実装する
コンテキストが準備できたので、プロバイダを実装しましょう。プロバイダは LogtoClient
インスタンスを初期化し、ユーザーが認証されているかどうかをチェックし、そのコンテキストを子コンポーネントに提供します。
新しいファイル provider.tsx
を作成します: