🔓

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 メールアドレスに関する情報

profilechat_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ミニアプリは初回アクセス時によりスムーズに起動できるようになりました。今回のポイントをまとめると以下のとおりです。

  • 初回アクセス時の簡略化同意画面・読み込み画面が表示されなくなった
  • openid ScopeはLINEミニアプリ起動時から利用可能
  • profilechat_message.write などは必要になったタイミングで追加許可を取得する
  • 起動直後に liff.getProfile() などを実行すると、簡略化のUXメリットを活かしにくい
  • IDトークンのプロフィール情報を前提にした既存実装は要確認
  • 追加権限の許可後はLIFFアクセストークンが更新される
  • 友だち追加オプションの表示タイミングにも影響する
  • 日本向けの新規LINEミニアプリではチャネル同意の簡略化が常時有効

今回の変更は「同意画面がなくなった」という小さなUI変更に見えますが、実際にはLINEミニアプリの認可設計を、

  • 「最初にまとめて権限を取得する」

から、

  • 「まずミニアプリを利用してもらい、必要になったタイミングで必要な権限を取得する」

方向へ寄せていく変更とも捉えられそうです。

既存のLINEミニアプリでも、起動直後に getProfile() していないか、IDトークン内のプロフィール情報を前提にしていないかなど、一度認可フローを確認してみるとよさそうです。

参考資料

株式会社ソニックムーブ

Discussion