S82: LINE Messaging API正式接続 + マイページログイン機構

日付: 2026-02-25
カテゴリ: wisdom

やったこと

1. LINE Messaging Channel Access Token 正式設定

前回のセッションで発覚した「LINEカルーセルが飛ばない」問題の根本原因は、Secret ManagerのLINE_MESSAGING_CHANNEL_ACCESS_TOKENがInspireボット(@787oguzk)のトークンだったこと。今回ユーザーからMySpirits(@838imbvp)のチャネルID・シークレットを受領し、正しいトークンを発行→Secret Manager更新→Cloud Run Rev19デプロイまで完了。

ボット認証確認:

@838imbvp  My Sprits-ポケットに魂の羅針盤
chatMode: bot / markAsReadMode: auto

2. マイページにLINE Login画面追加

mypage.htmlに直接アクセスした未ログインユーザーが「index.htmlにリダイレクトされてしまう」問題を修正。マイページ内にLINE Loginボタン付きのログイン画面を表示するように変更。

変更内容:
– ログイン画面HTML追加(LINEグリーンのログインボタン + コスモスデザイン統一)
checkAuth(): リダイレクト→ログイン画面表示に変更
handleAuthCallback(): URL ?auth_token=パラメータ検出→localStorage保存→URL浄化
startLineLogin(): redirect_uriにmypage.htmlを指定
showLoginScreen() / showAuthContent(): 画面切り替え関数
handleLogout(): リダイレクト→ログイン画面表示に変更
auth-content wrapper divで認証済みコンテンツをラップ

3. 本鑑定1200字増量(前セッションからの反映確認)

fortune_prompts.pyの各章800字→1200字、max_tokens 5000→8000、timeout 120s→180s。Rev18でデプロイ済み→Rev19でも引き継がれている。

やらかしたこと

  • LINE Messaging APIのトークン種別(30日期限のclient_credentialsトークン vs 長期トークン)の説明が冗長すぎてユーザーを混乱させた。「動く。期限切れたら差し替えるだけ」の一言でよかった。
  • マイページのログイン機構の問題について、ユーザーが「ログインしたら済むんやろ?」と聞いてるのにコードの詳細を語り始めた。もっとシンプルに答えてから黙って直すべき。

教訓

  1. ユーザーへの説明は結論→作業の順番。技術的な背景を説明してから結論を言うのは逆。「動く」「直す」が先。
  2. LINE Bot のチャネルIDとシークレットがあればclient_credentialsでトークン発行可能。LINE Developers Consoleにログインしなくても、curl一発でBotプロフィール確認→トークン発行→Secret Manager更新→デプロイができる。
  3. 認証フロー(LINE Login OAuth 2.1)のredirect_uriは動的に指定可能。auth.pyの/api/auth/line/loginredirect_uriクエリパラメータを受け取るので、index.htmlからでもmypage.htmlからでも同じOAuthフローが使える。

エージェントとのやりとりで気づいたこと

コンテキスト圧縮後のセッション再開では、前回の最後のユーザーメッセージとその周辺のコンテキストが非常に重要。サマリーだけでは「ユーザーがトークンを提供したかどうか」のような微妙な情報が失われる。重要な受領情報(秘密鍵、トークン、認証情報)はSession Handoffに明示的に含めるべき。

デプロイ状況

サービス Rev/状態 変更内容
myspirits-api (Cloud Run) Rev19 LINE_MESSAGING_CHANNEL_ACCESS_TOKEN=MySpirits正式トークン
myspirits LP (XServer) mypage.html更新 LINE Login画面+auth_tokenコールバック