Lesson 1 のソースコードを複製した場合は、作業を進める前に
cd コマンドで Lesson 2 のディレクトリに移動したうえで、必ず以下のコマンドを実行してください。
1. Airstack Node SDK のインストール
まず最初に、Airstack API との統合を始めるために Airstack Node SDK のインストールが必要なため、以下のコマンドで必要なパッケージのインストールを行います。2. ローカル環境変数に API キーを追加
次に、Airstack API に必要な API キーの設定を行っていきます。 ただし、API キーは漏洩すると悪用される恐れがあるため、API キーの値を直接プログラムのソースコードに記述することは望ましくありません。 そのため、Airstack API キーの取得 で取得した API キーをプログラム側からを利用可能にするためにローカル環境変数のファイルを用意し、そのファイル内に API キーの値を保存します。 具体的には、プロジェクトのディレクトリ直下に.env.local ファイルを作成し、その中に AIRSTACK_API_KEY={your_api_key} と記述し、保存します。
これにより、プログラム側から process.env.AIRSTACK_API_KEY と呼び出すことにより、その値を読み取ることが可能になります。
2. 変数 frames の外部ファイル化とエクスポート
API 連携を実装する際にcreateFrames 関数内でミドルウェアとして Airstack Hubs を設定する必要がありますが、メンテナンス性を考慮した場合、変数 frames を外部ファイル化して使いまわすほうが効率的なため、変数 frames を外部ファイル化します。
/app/framesディレクトリ直下にframes.tsxファイルを作成します。/app/frames/frames.tsxファイル内に/app/frames/route.tsxファイル内の以下の部分をコピー&ペーストします。
/app/frames/route.tsx
- 変数
framesを他のファイルからインポートできるように、このファイルに必要なファイルをインポートしつつ、変数をexportします。
/app/frames/frames.tsx
3. Airstack Hubs の設定とローカル環境変数のロード
変数frames の外部ファイル化が終わったら、createFrames 関数のミドルウェアとして https://hubs.airstack.xyz を設定し、ローカル環境変数から API キーの値を設定します。
/app/frames/frames.tsx
4. 変数 frames の削除とインポート
変数frames を外部からインポートする場合、元々記述してあった変数 frames をそのままにしておくと、同じ変数名が存在するコンフリクトの状態になりエラーが発生するため、インポート文を追記しつつ、元々記述してあった変数 frames のコードを削除します。
/app/frames/route.tsx
5. 不要なインポートの削除
createFrames によって生成された変数 frames を削除すると、createFrames 関数と farcasterHubContext 関数のインポートが不要になる(使われていないインポートは文字がグレーアウトする)ため、それらの不必要な記述を削除しコードを見やすくします。
コード修正前
/app/frames/route.tsx
コード修正後
/app/frames/route.tsx
6. API エンドポイントの実装
API に接続するための準備ができたら API エンドポイントを実装していきます。 まず、API エンドポイントとして、app ディレクトリ直下に api ディレクトリを作成し、ディレクトリ内に route.tsx ファイルを作成します。
ファイルを作成したら、以下のソースコードをコピー&ペーストします。
/app/api/route.tsx
7. クエリのテストと変数の定義
次に、Airstack API から取得するデータのテストを行うために以下の URL にアクセスします。 https://app.airstack.xyz/api-studio 今回はテストとしてユーザーの基本的な情報を取得して値を確認したいため、以下のように取得したいデータに必要な項目を選択し、画面右側にある 赤に右三角 のボタンをクリックします。 選択項目や FID の値に間違いがなければ Airstack API からのレスポンスとして右側に入力した FID と選択項目に応じた値が表示されるはずです。
Airstack API Studio の画面
userDataQuery 変数として定義します。
/app/api/route.tsx
/app/api/route.tsx
8. クエリの呼び出し
クエリをuserDataQuery 変数に格納したら、そのクエリを呼び出すために API エンドポイントへアクセス(HTTP GET リクエスト)があった際の処理をするための関数を実装します。
/app/api/route.tsx
9. API エンドポイントからデータ取得するための関数と変数を定義
API エンドポイントの実装が終わったら、今度はそれを呼び出す関数と変数を定義する必要があります。 今回のレッスンでは、フレームの最初のページから次のページへ遷移するためのボタンがクリックされたタイミングで API エンドポイントへのリクエストを行うため、/app/frames/next/route.tsx に関数を定義します。
/app/frames/next/route.tsx
10. リクエストユーザーの fid を取得
次に、fetchUserData でユーザーデータを取得する際に必要なリクエストユーザーの fid を取得するための処理を追加します。
/app/frames/next/route.tsx
11. 取得した fid をもとに処理を実行
最後に、fid が値として存在する場合に実行する処理を追加します。
/app/frames/next/route.tsx
12. 最終的なソースコード
Source Code
GitHub Repository: Lesson 2