Open5
Next.js(T3 app),NextAuth, wagmi, siweいろいろ
appをcreateしたときの.env
# Note that not all variables here might be in use for your selected configuration
# Prisma
DATABASE_URL=file:./db.sqlite
# Next Auth
NEXTAUTH_SECRET=
NEXTAUTH_URL=http://localhost:3000
# Next Auth Discord Provider
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=
NextAuth
providers
MetaMaskの場合は
CredentialsProvider({
name: "Ethereum",
credentials: {
message: {
label: "Message",
type: "text",
placeholder: "0x0",
},
signature: {
label: "Signature",
type: "text",
placeholder: "0x0",
},
},
async authorize(credentials) {}
- credentials
- http://localhost:3000/api/auth/signin
- デフォルトのログイン画面がある。
- ここにフォームとして表示される

- ここで定義したkey(message, signature)はauthorizeでcredentials?.message, credentials?.signatureというふうに取得できる
- ただ、このログイン画面は不要(入力でmetamaskログインすることはないので)
getCsrfToken
wagmi
- MetaMask接続済みかを確認
- const { isConnected } = useAccount()
- chainIdを取得
- https://github.com/spruceid/siwe-next-auth-example/blob/main/pages/siwe.tsx
- const { chain } = useNetwork()
next-auth × wagmiの記事調べると
WagmiProvider 使ってる記事がよく出てくるが、その情報は古くてwagmi0.4系でdepracatedになっている。
WagmiConfigを使うように。
SIWE
- NenxtAuthでのMetaMask署名と検証
- validateは2系から非推奨。verifyを使う。
バックエンドも含めてるので参考になるかも。