LINEで招待状を共有する
LINEメッセンジャーを使って友達に招待状を共有する方法を説明します。基本共有とFlexメッセージ共有に対応しています。
LINEで招待状を共有する
日本語(ja)ロケールでは、LINEメッセンジャーを通じて招待状を共有できます。2つの共有方式に対応しています。
共有方法の概要
モバイル
| 方法 | ボタン名 | 表示形式 | ログイン | ボタン位置 |
|---|---|---|---|---|
| Flexメッセージ(推奨) | LINEで友達に送る | 大きな画像付きリッチカード | LIFF認証が必要 | 上(メインボタン) |
| 基本共有 | LINEで送る | URL大きく表示+小さいサムネイル | 不要 | 下(サブボタン) |
デスクトップ
デスクトップブラウザでは、LIFF shareTargetPickerのSSO認証・ポップアップブロック・サードパーティCookie制限などの技術的制約により、Flexメッセージ共有が正常に動作しません。そのため、デスクトップでは「LINEで送る」基本共有ボタンのみ表示されます(メインボタンスタイル)。
| 方法 | ボタン名 | 表示形式 | ログイン |
|---|---|---|---|
| 基本共有 | LINEで送る | URL大きく表示+小さいサムネイル | 不要 |
方法1: 基本共有(LINEで送る)
最もシンプルな方法で、LINE social-plugins URLスキームを使用します。
動作の流れ:
- ボタンをクリック
- LINE共有ポップアップ(またはアプリ)が開く
- 共有する友達またはグループを選択
- URLとタイトルがテキストとして送信される
特徴:
- LINEログイン不要
- デスクトップ・モバイル両方に対応
- シンプルなURL+テキスト形式で共有
- OG設定済みならリンクプレビューにサムネイルが表示される
表示の特徴:
- URLが大きく表示され、サムネイル画像は小さく表示される
- テキストメッセージ形式のため、チャット画面での見た目はシンプル
- 受信者がリンクをタップするとOGプレビュー(小さいサムネイル+タイトル+説明)が展開される
方法2: Flexメッセージ共有(LINEで友達に送る)※モバイル専用
LIFF SDKのshareTargetPickerを使用して、リッチカード(Flex Message)形式で共有します。
基本共有と異なり、大きなヒーロー画像付きのカードとしてチャットに表示されるため、視覚的なインパクトが大きく、招待状の印象をより効果的に伝えられます。
この機能はモバイル端末でのみ利用可能です。デスクトップブラウザでは、LIFF SDKの技術的制約(SSOセッション未発行、ポップアップブロック、サードパーティCookie制限)によりshareTargetPickerが正常に動作しないため、ボタンは表示されません。
動作の流れ:
- ボタンをクリック
- LINEログインが必要な場合 → LINEアプリのLIFFブラウザに自動遷移
- ログイン完了後、
shareTargetPickerが自動実行 - 友達・グループ選択画面が表示
- 選択した相手にFlex Messageカードが送信される
Flex Messageカードの構成
カードはLINEのFlex Message Bubble形式で構成されます:
┌─────────────────────────┐
│ │
│ ヒーロー画像 │
│ (1.91:1 比率) │
│ │
├─────────────────────────┤
│ 招待状タイトル(太字) │
│ 説明テキスト(グレー) │
├─────────────────────────┤
│ ┌───────────────────┐ │
│ │ 招待状を見る │ │
│ │ (LINEグリーン) │ │
│ └───────────────────┘ │
└─────────────────────────┘
各エリアの詳細:
| エリア | 内容 | 備考 |
|---|---|---|
| Hero | OG画像 | 1.91:1比率、coverモード。画像なしの場合は省略 |
| Body - タイトル | OGタイトルまたはテンプレートタイトル | 太字、最大2行 |
| Body - 説明 | OG説明 | グレー(#999999)、最大2行。なければ省略 |
| Footer | 「招待状を見る」ボタン | LINEグリーン(#06C755)、クリックで招待状URLを開く |
LINEログインフロー
Flexメッセージ共有にはLINEログインが必要です。フローは以下の通りです:
ユーザーが「LINEで友達に送る」をクリック
↓
LIFFログイン状態を確認
├─ ログイン済み → shareTargetPickerをすぐ実行
└─ 未ログイン
↓
liff.line.me/{LIFF_ID}/{現在のパス} にリダイレクト
↓
LINEアプリのLIFFブラウザでページが開く(自動ログイン)
↓
liff.isInClient() === true を検知
↓
shareTargetPicker を自動実行
LIFFログインとソーシャルログインは別物です。LINEソーシャルログイン(NextAuth)でログイン済みでも、LIFF共有時には別途LIFFログインが必要になる場合があります。これはLINEプラットフォームの構造的な制約です。
OG画像の推奨サイズ
LINEで最適に表示するための画像サイズ:
| 用途 | サイズ | 比率 |
|---|---|---|
| Flex Message Hero | 1200 x 628px | 1.91:1 |
| リンクプレビュー | 1200 x 630px | 1.91:1 |
| LINEプレビュー(正方形) | 1200 x 1200px | 1:1 |
1200 x 630px(1.91:1比率)でアップロードすると、Flex Messageと通常のリンクプレビューの両方で最適に表示されます。
技術的な実装詳細
使用コンポーネント
LINE共有機能は以下の3つのコンポーネントに実装されています:
| コンポーネント | パス | 用途 |
|---|---|---|
ShareWizardStep1 | src/components/dashboard/ShareWizardStep1.tsx | OG設定ウィザード Step 1(LINEプレビュー:基本共有+カード共有の両方を表示) |
ShareWizardStep3 | src/components/dashboard/ShareWizardStep3.tsx | 共有設定ウィザード Step 3(実際のLINE共有ボタン) |
SimpleShareDialog | src/components/dashboard/SimpleShareDialog.tsx | 簡易共有ダイアログ |
LIFF SDK設定
| 項目 | 値 |
|---|---|
| パッケージ | @line/liff@^2.27.3 |
| 環境変数 | NEXT_PUBLIC_LINE_LIFF_ID |
| LIFF ID形式 | {Channel_ID}-{LIFF_Suffix} |
| ロケール制限 | ja(日本語)専用 |
ミドルウェア liff.state 処理
LIFFリダイレクト時にliff.stateパラメータを通じて元のパスを復元します:
- 場所:
src/middleware.ts(セクション2) - 条件:
pathname === '/'かつliff.stateクエリパラメータがある場合 - 動作:
liff.stateの値をpathnameに設定してリダイレクト - 目的: LINEアプリからLIFFブラウザに入った際、元の共有ページに復元
よくある質問
デスクトップで「LINEで友達に送る」ボタンが表示されません
これは仕様です。デスクトップブラウザでは、LIFF shareTargetPickerが以下の理由で正常に動作しないため、モバイルのみに表示しています:
- SSOセッション未発行: 外部ブラウザのauto-loginではSSOセッションが発行されず、タ―ゲットピッカーの代わりにメール/パスワードログイン画面が表示される
- ポップアップブロック: ブラウザがshareTargetPickerのポップアップウィンドウをブロックする場合がある
- サードパーティCookie制限: Safari ITP、Firefox ETP、Chromeなどがクロスドメインのcookieを制限
デスクトップからは「LINEで送る」基本共有ボタンをご利用ください。
Flexメッセージが送信できません
確認してください:
- モバイル端末から操作しているか確認(デスクトップでは利用不可)
- 招待状が「公開済み」ステータスか確認
- LINEログインが正常に完了しているか確認
NEXT_PUBLIC_LINE_LIFF_ID環境変数が設定されているか確認
ボタンが無効状態です
LIFF SDKの読み込み中です。しばらく待ってから再試行してください。SDK読み込みに失敗した場合は「LINEで送る」基本共有ボタンをお使いください。
モバイルでLINEアプリが開きません
基本共有(「LINEで送る」)は別のポップアップ/タブで開きます。LINEアプリがインストールされていれば自動的にアプリに切り替わります。Flexメッセージ共有(「LINEで友達に送る」)はliff.line.meURLを通じてLINEアプリのLIFFブラウザで直接開きます。