LINEミニアプリの同意画面がほぼ消えたので、認可フローと実装への影響を整理する
2026年8月26日、LINEミニアプリの「チャネル同意の簡略化」に関する認可フローが変更されました。
これまでは、チャネル同意の簡略化が有効なLINEミニアプリへ初めてアクセスした際に「簡略化同意画面」または「読み込み画面」が表示されていました。今回の変更でこれらの画面も表示されなくなり、ユーザーはより直接的にLINEミニアプリを起動できるようになっています。
参考:LINE Developers ニュース
https://developers.line.biz/ja/news/1/
一見すると「同意画面がなくなって便利になった」だけの変更に見えますが、実装側では openid / profile などのScopeや、IDトークンを利用したユーザー登録処理などに影響します。認可フローを改めて理解しておく必要がありそうです。
この記事では、今回何が変わったのかと、LINEミニアプリを実装する際に気をつけたいポイントを整理します。
何が変わったのか
従来のLINEミニアプリでは、初回アクセス時にユーザーによる同意が必要でした。その後「チャネル同意の簡略化」が導入されて同意フロー自体が簡略化され、さらに2026年8月26日の変更によって初回アクセス時の画面表示が削減されています。
イメージすると以下のとおりです。
【これまで】
LINEミニアプリ起動
↓
簡略化同意画面 / 読み込み画面
↓
LINEミニアプリ
【2026年8月26日以降】
LINEミニアプリ起動
↓
LINEミニアプリ
より直接的にサービスを開始できるようになりました。
自動的に利用可能になるのは openid のみ
「チャネル同意の簡略化」の対象になるのは、ユーザーIDを取得するための openid Scopeだけです。LINEミニアプリを起動した時点では、次の状態になります。
openid
↓
利用可能
↓
ユーザーIDを利用できる
一方で、以下のような権限は別扱いです。
| Scope | 用途 |
|---|---|
openid |
ユーザーIDの取得 |
profile |
プロフィール情報の取得 |
chat_message.write |
メッセージ送信 |
email |
メールアドレスに関する情報 |
profile や chat_message.write などは、必要になったタイミングでユーザーから追加の許可を取得する必要があります。
参考:LINEミニアプリの認可フロー
https://developers.line.biz/ja/docs/line-mini-app/develop/channel-consent-simplification/
liff.getProfile() するとどうなる?
たとえばLINEミニアプリで、次のようにプロフィールを取得するとします。
const profile = await liff.getProfile();
liff.getProfile() には profile Scopeが必要です。ユーザーがまだ profile を許可していない状態で実行すると、「アクセス許可要求画面」が表示されます。
つまり現在の認可フローは、ざっくり以下のようになります。
LINEミニアプリ起動
↓
openidは利用可能
↓
サービス利用開始
↓
プロフィール情報が必要になる
↓
liff.getProfile()
↓
アクセス許可要求画面
↓
ユーザーが許可
↓
プロフィール取得
最初にまとめて権限を要求するのではなく、必要になったタイミングで必要な権限を要求する設計がしやすくなっています。
起動直後に getProfile() するとメリットが薄れる
今回の変更で特に意識したいポイントです。
たとえば既存のLINEミニアプリが、次のような実装だったとします。
await liff.init(...);
const profile = await liff.getProfile();
// ユーザー情報を使って初期処理
この場合、LINEミニアプリを開いた直後に profile Scopeが必要になり、結果として以下の流れになります。
LINEミニアプリ起動
↓
即 getProfile()
↓
アクセス許可要求画面
↓
サービス開始
せっかく起動時のチャネル同意画面がなくなっても、ユーザーからすると「結局、起動直後に許可画面が出てきた」というUXになってしまいます。
参考:LINEミニアプリの認可フロー
https://developers.line.biz/ja/docs/line-mini-app/develop/channel-consent-simplification/
たとえば以下のような設計です。
LINEミニアプリ起動
↓
サービス内容を表示
↓
ユーザーが「会員登録」を選択
↓
profileが必要
↓
アクセス許可要求
↓
会員登録
今回の変更を活かすなら、既存処理をそのまま動かすだけではなく、**「そのユーザー情報、本当に起動直後に必要?」**を見直してみてもよさそうです。
IDトークンをバックエンドに送っている場合は注意
個人的に今回の変更で特に気をつけたいのがここです。
LINEミニアプリでは、次のような構成でユーザー登録・認証を行っているケースがあります。
LINEミニアプリ
↓
ID Token取得
↓
Backendへ送信
↓
LINE Login APIで検証
↓
プロフィール情報取得
↓
サービスのユーザーを作成
このとき、**「IDトークンからプロフィール情報が取れる前提」**の実装になっている場合は注意が必要です。
profile Scopeへの同意が行われていない場合、IDトークンのペイロードにユーザーのプロフィール情報は含まれません。そのため、次のような処理は期待どおりに動かない可能性があります。
ID Tokenを検証
↓
nameがある前提
↓
ユーザー作成
LINE公式ドキュメントでも、profile Scopeへの同意がない場合はIDトークンにプロフィール情報が含まれず、サービスアカウントの作成などに利用できなくなる例が紹介されています。
参考:LINEミニアプリの認可フロー
https://developers.line.biz/ja/docs/line-mini-app/develop/channel-consent-simplification/
今回の変更を機に、以下を確認しておいた方がよさそうです。
- どのScopeを要求しているのか
- ユーザーがそのScopeを許可済みなのか
- IDトークンのどのClaimに依存しているのか
必要な権限を事前に確認する
LIFF SDKでは、liff.permission.query() を使ってユーザーが指定した権限を許可しているか確認できます。
const permissionStatus = await liff.permission.query("profile");
if (permissionStatus.state === "prompt") {
await liff.permission.requestAll();
}
上記のようにすると、profile が未許可の場合にアクセス許可要求画面を表示できます。
liff.permission.query() が返す状態は以下のとおりです。
| state | 意味 |
|---|---|
granted |
許可済み |
prompt |
未許可 |
unavailable |
チャネル自体がそのScopeを持っていない |
また、liff.permission.getGrantedAll() を使えば、ユーザーが現在許可しているScopeの一覧を取得できます。
liff.permission.getGrantedAll();
認可状態によって処理を変えるLINEミニアプリでは、このあたりを明示的に扱う方が安全そうです。
Access Tokenの扱いにも注意
追加権限を要求する実装では、もう1つ注意点があります。
「チャネル同意の簡略化」が有効な状態でユーザーがアクセス許可要求画面から追加権限を許可すると、LIFFのアクセストークンが更新されます。そして、それ以前に発行されていたLIFFアクセストークンは無効になります。
// LIFF起動
// ここでAccess Tokenを取得
const token = liff.getAccessToken();
// 追加権限を要求
// ...
// 最初に取得したtokenをBackendへ送る(❌ 無効になっている可能性がある)
API(token);
必要な追加権限を取得した後に、改めて利用するトークンを取得する設計にしておく必要があります。
参考:サービスメッセージを送信する
https://developers.line.biz/ja/docs/line-mini-app/develop/service-messages/
友だち追加オプションにも影響する
もう1つ見落としやすいのが、LINE公式アカウントの「友だち追加オプション」です。
従来は、チャネル同意画面やアクセス許可要求画面上でLINE公式アカウントの友だち追加を促すことができました。しかし、openid のみを利用するLINEミニアプリでは、チャネル同意の簡略化によって以下のようになります。
チャネル同意画面
↓
表示されない
アクセス許可要求画面
↓
表示されない
つまり、友だち追加オプションを表示する画面自体が出てこないということになります。
LINEミニアプリから友だち追加を促したい場合は、追加Scopeを要求する際のアクセス許可要求画面を利用する方法のほか、liff.requestFriendship() を使って任意のタイミングで友だち追加・ブロック解除を促すこともできます。
liff.requestFriendship();
「ミニアプリ起動時になんとなく友だち追加を促す」のではなく、次のような設計を検討してもよさそうです。
サービス利用
↓
ユーザーにとって意味のあるタイミング
↓
友だち追加を促す
参考:LINEミニアプリの認可フロー
https://developers.line.biz/ja/docs/line-mini-app/develop/channel-consent-simplification/参考:LIFF APIリファレンス - liff.requestFriendship()
https://developers.line.biz/ja/reference/liff/#request-friendship
新規LINEミニアプリでは無視できない仕様に
「チャネル同意の簡略化」は、単なるオプション機能として考えない方がよさそうです。
2026年1月8日以降に作成された、日本をサービス提供地域とする新規LINEミニアプリチャネルでは、「チャネル同意の簡略化」が常に有効になっています。対象となるチャネルでは機能を無効にすることもできません。
対象チャネルではトグル自体が削除され、機能を無効化できなくなっています。そのため今後新しくLINEミニアプリを開発する場合は、チャネル同意の簡略化を前提として認可フローを設計する必要があります。
参考:日本の新規LINEミニアプリチャネルにおいて、2026年1月8日より「チャネル同意の簡略化」機能が常に有効になりました
https://developers.line.biz/ja/news/2026/01/08/channel-consent-simplification/
まとめ
2026年8月26日の変更によって、LINEミニアプリは初回アクセス時によりスムーズに起動できるようになりました。今回のポイントをまとめると以下のとおりです。
- 初回アクセス時の簡略化同意画面・読み込み画面が表示されなくなった
-
openidScopeはLINEミニアプリ起動時から利用可能 -
profileやchat_message.writeなどは必要になったタイミングで追加許可を取得する - 起動直後に
liff.getProfile()などを実行すると、簡略化のUXメリットを活かしにくい - IDトークンのプロフィール情報を前提にした既存実装は要確認
- 追加権限の許可後はLIFFアクセストークンが更新される
- 友だち追加オプションの表示タイミングにも影響する
- 日本向けの新規LINEミニアプリではチャネル同意の簡略化が常時有効
今回の変更は「同意画面がなくなった」という小さなUI変更に見えますが、実際にはLINEミニアプリの認可設計を、
- 「最初にまとめて権限を取得する」
から、
- 「まずミニアプリを利用してもらい、必要になったタイミングで必要な権限を取得する」
方向へ寄せていく変更とも捉えられそうです。
既存のLINEミニアプリでも、起動直後に getProfile() していないか、IDトークン内のプロフィール情報を前提にしていないかなど、一度認可フローを確認してみるとよさそうです。
Discussion