Skip to main content

始める前に

今回は、プロフィール画像の取得方法として
  • Airstack API を利用する方法(難易度*1:★★★☆☆)
  • Frames Context を利用する方法(難易度*1:★☆☆☆☆)
をそれぞれ説明します。 ※1)プログラミング初心者における難易度のレベル

1. Airstack API を利用する方法

この方法では、Lesson 2 のソースコードを元に必要な処理を追加していきますので、まずは Lesson 2 のソースコードに 修正後のコード の内容に従い修正を加え、Airstack API から取得したデータを利用できる状態にします。

修正前のコード

/app/frames/reveal/route.tsx

修正後のコード

/app/frames/reveal/route.tsx
次に、変数 profileImageUrl に対して、Airstack API からデータを取得できた場合は userData.profileImageUrl の値を、Airstack API からデータを取得できなかったは ${appURL()}/unavailable.png を値として定義し、image: の値として設定します。
/app/frames/reveal/route.tsx
最後に、今回はレッスンはプロフィール画像を使ったサンプルのため、フレームの画像の比率を 1:1 に設定します。
/app/frames/reveal/route.tsx
問題なくプロフール画像が取得できていれば次のページにボタンをクリックしたユーザーのプロフィール画像が表示されるはずです。

2. Frames Context を利用する方法

この方法は Airstack API のデータを用いないため API キーの必要がなく、比較的簡単に実装できますが、Airstack API からデータを取得する処理を残しておかないと Airstack API への接続が発生せず、フレームの製作者を識別できないため、Moxie の報酬対象外となりますのでご注意ください。
この方法では、Airstack API に関する処理やファイルが必要ないため、Lesson 1 のソースコードを元に必要な処理を追加していきます。 まずは、Frames Context に含まれるデータがどのような内容か、どのデータを取得する必要があるのか確認するため、ctx の内容をコンソールログに出力します。
/app/frames/reveal/route.tsx
修正が終わったら npm run dev でローカルサーバーを起動し、フレームのボタンをクリックしてコンソールログに表示されるデータを確認します。
おそらく以下のようなログが表示されるはずです。
次に、Frames Context のデータの中に必要なデータがあるか確認をします。 以下はデータの構造をより分かりやすくするために不必要なデータを削除し、必要なデータをハイライトしたものです。
今回のケースでは message > requesterUserData > profileImage の内容が必要なはずなので、画像のURLとして使えるように profileImage の値を変数 profileImageUrl に代入します。
/app/frames/reveal/route.tsx
あとは変数 profileImageUrlimage: の値として設定します。
/app/frames/reveal/route.tsx
最後に、この方法の場合もフレームの画像の比率を 1:1 に設定します。
/app/frames/reveal/route.tsx
問題なくプロフール画像が取得できていれば次のページにボタンをクリックしたユーザーのプロフィール画像が表示されるはずです。