LIFF(LINE Front-end Framework)は、
LINEログインやトークルーム連携をWebアプリに組み込める、非常に強力な仕組みです。
LINE公式アカウントと組み合わせることで、ユーザー体験を損なわずに高度な連携施策を実現できます。
一方で、
- ログイン後にURLパラメータが消える
- liff.sendMessages() が403エラーになる
といった実装上のつまずきも多く見られます。
本記事では、
LIFF活用時に必ず押さえておきたい2つの重要トピックを分かりやすく解説します。
Topic1|LIFFログイン時にURLパラメータを失わない方法
LIFFのURLにパラメータを付与した状態で、LINEログインが必要なLIFFアプリを開く場合、
ログイン処理の途中でURLパラメータが失われるリスクがあります。
これは、liff.login() 実行時にリダイレクト先を明示しないと、
LINE側の仕様により元のURLが正しく引き継がれないケースがあるためです。
この問題を防ぐためには、次のように記述します。
liff.login({ redirectUri: window.location.href });
この方法により、
パラメータを含む元のURLに確実に戻ることができ、
キャンペーンIDや外部システム連携に必要な情報を保持できます。
Topic2|liff.sendMessages() と403エラーの正しい理解
liff.sendMessages() は、
ユーザーの代わりに、LIFFアプリが開かれているトークルームへメッセージを送信できる機能です。
ユーザー操作を最小限にしながら、自然なLINE体験を提供できるため、
業務連携や自動化施策で多く利用されています。
ただし、この機能を利用するには、以下の条件をすべて満たす必要があります。
- 1対1・グループ・複数人トークから起動したLIFFアプリである
- LIFFブラウザ内で動作している
- chat_message.write スコープが有効である
- 「最近使用したサービス」から再読み込みされていない
条件を満たしていない場合、
403 user doesn’t grant required permissions yet エラーが発生します。
例えば、次のようなケースではエラーになります。
- KeepメモからLIFFアプリを開いた場合
- Webサイトのリダイレクト処理でLIFF URLを開いた場合
- LIFF間遷移後に chat_message.write スコープが無効になった場合
- ユーザーが chat_message.write の認可を行わなかった場合
なお、LIFFアプリがどの画面から起動されたかは、liff.getContext() メソッドで確認できます。
LIFF活用を安定させるためのポイント
LIFF施策を安定運用するためには、
- ログイン時のリダイレクト制御を正しく行う
- 起動コンテキストを判定して機能を制御する
- スコープ制約を前提にUXを設計する
といった設計が欠かせません。
DX-LINEで広がるLIFF活用
DX-LINEを活用すると、
LIFFとLINE公式アカウントを業務システムと安全に連携できます。
- LIFFで取得したユーザー情報を業務データとして活用
- トークルーム起動を前提とした確実なメッセージ設計
- CRM・SFA・基幹システムとの連携
技術的な制約を理解したうえで設計することで、
失敗しにくいLIFF活用を実現できます。
▶ DX-LINE 公式サイト
https://dx-line.com/
