この記事はCodex製です。
##依頼内容と課題
- 依頼:
https://ro1.dev/monememoが Googleログイン前提のように見える状態を直したい。 - 課題:
- MoneyForwardアカウントが Google連携ログインのみの場合、メール/パスワード入力方式で接続しづらい。
- 既存の monememo はメール/パスワード経由のみで、代替認証経路がなかった。
##アプローチ
- monememo の認証に「Cookie接続」を追加。
- UI で
name=value; ...形式の Cookie を入力可能にした。 - API で Cookie文字列を
SerializableCookie[]に変換し、MoneyForward認証済みかをサーバー側で検証してセッション確立する実装にした。
- UI で
- 既存のメール/パスワードログインは維持。
- MoneyForwardへの到達確認(
/bs/balance_sheetプローブ)を共通化し、どちらのログイン方式でも同じ検証を通すようにした。
(推論)Google連携アカウントでパスワードログインが使えないケースでは、Cookie接続を用意するのが最短で実用的な回避策になる。
##アウトプット
- 更新:
src/lib/monememo/moneyforward-client.tsparseMoneyforwardCookieHeaderを追加verifyMoneyforwardSessionFromCookiesを追加- 認証確認処理を
probeMoneyforwardSessionとして共通化
- 更新:
src/pages/api/monememo/auth/login.tscookieパラメータ受け取り対応- Cookie方式でのセッション確立を追加
- 入力バリデーションメッセージを更新
- 更新:
src/pages/monememo/index.tsx- 認証UIに Cookie接続入力欄とボタンを追加
- 「Googleログイン連携アカウントはCookie接続を利用」の案内を追加
検証:
bun run typecheck(pass)
##参照した一次情報
https://nextjs.org/docs/pages/building-your-application/routing/api-routes
https://developer.mozilla.org/docs/Web/HTTP/Headers/Cookie
https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie