LIFF v2 APIリファレンス

動作環境

LIFF v2の動作環境については、『LIFFドキュメント』の「概要」を参照してください。

なお、LIFFアプリをLIFFブラウザで開いた場合と、外部ブラウザで開いた場合では、使用できる機能が異なります。たとえば、liff.scanCode()は、外部ブラウザでは利用できません。詳しくは、各クライアントAPIの説明をご覧ください。

OpenChatでのLIFFアプリの利用はサポートされていません

現在のところ、OpenChatではLIFFアプリの利用は正式にサポートされていません。たとえば、LIFFアプリからプロフィール情報を取得できない場合があります。

LIFF SDKのエラー

LIFF SDKのエラーはLiffErrorオブジェクトで返されます。

エラーを識別する際は、エラーコードとエラーメッセージの両方を参照してください

エラーメッセージは予告なく変更されることがあるため、エラーをエラーメッセージの完全一致で識別すると、LIFFアプリが正常に動作しなくなる可能性があります。エラーを識別する際は、エラーメッセージが変更されてもLIFFアプリが正常に動作するよう、エラーコードとエラーメッセージの両方を参照してください。

なお、エラーコードによってエラーを一意に識別できるよう、将来的に改善する予定です。

LiffErrorオブジェクト

code

String

エラーコード

message

String

含まれないことがあります

エラーメッセージ

cause

Unknown

含まれないことがあります

エラーの原因

エラー内容

エラーコード説明
400リクエストに問題があります。リクエストパラメータとJSONの形式を確認してください。
401Authorizationヘッダーを正しく送信していることを確認してください。
403APIを使用する権限がありません。ご契約中のプランやアカウントに付与されている権限を確認してください。
429リクエスト頻度をレート制限内に抑えてください。
500APIサーバーの一時的なエラーです。
INIT_FAILEDLIFF SDKの初期化時にエラーが発生しました。
INVALID_ARGUMENT無効な引数が指定されました。
UNAUTHORIZED
  • ユーザーが認可しませんでした。
  • アクセストークンを指定せずにAPIが呼ばれました。
  • ログイン処理を行う前に、シェアターゲットピッカーを呼び出しました。
FORBIDDEN
  • 必要な権限がありません。
  • サポートされていない環境で機能を利用しようとしました。
INVALID_CONFIG無効な設定です。
  • liff.init()を使ってLIFFアプリを初期化するには、liffIdを指定する必要があります。
  • liff.permanentLink.createUrl()を実行したページのURLが、[エンドポイントURL]に指定したURLで始まりません。
INVALID_ID_TOKENIDトークンが正規のものであることを確認できませんでした。
EXCEPTION_IN_SUBWINDOWサブウィンドウで問題が発生しました。
  • ターゲットピッカー(グループまたは友だちを選択する画面)を表示後、10分以上操作しなかった場合など
UNKNOWN不明なエラーです。

liff.id

liff.init()に渡したLIFFアプリID(String型)を保持するプロパティです。

liff.init()を実行するまでは、nullです。

liff.ready

LIFFアプリ起動後、liff.init()の実行が初めて終了したときにresolveするPromiseオブジェクトを保持するプロパティです。

liff.readyを利用すると、liff.init()の終了を待って、任意の処理を実行できます。

LIFFアプリ初期化前でも実行できます

liff.readyは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

注意

liff.init()実行中に何か問題が起きても、liff.readyはrejectしません。また、LiffErrorオブジェクトを返すこともありません。

liff.init()

LIFFアプリを初期化します。

このメソッドを実行すると、LIFF SDKの他のメソッドを実行できるようになります。LIFFアプリは、ページを開くたびに必ず初期化する必要があります。同じLIFFアプリ内での遷移であっても、新たにページを開く場合にはliff.init()メソッドを実行してください。

LIFFアプリが正しく初期化されていない状態でLIFFの機能を使用した場合、それらの動作は保証対象外です。

liff.init()メソッドを実行するとき、LIFF SDKは現在のユーザーのアクセストークンやIDトークンをLINEプラットフォームから取得します。

  • LIFF SDKが取得したアクセストークンを利用するには、「liff.getAccessToken()」を呼び出します。
  • LIFF SDKが取得したIDトークンのペイロードを利用するには、「liff.getDecodedIDToken()」を呼び出します。

LIFFアプリ初期化時の注意事項

LIFFアプリを初期化する際の注意事項は以下のとおりです。注意事項を確認し、理解した上でLIFFアプリの開発を行ってください。

liff.init()をエンドポイントURL以下の階層で実行する

liff.init()メソッドはエンドポイントURLと完全に一致、もしくはエンドポイントURLよりも下の階層においてのみ動作します。これら以外のURLに遷移して実行した場合、liff.init()メソッドの動作は保証されません。

以下の例では、エンドポイントURLがhttps://example.com/path1/の場合に、liff.init()メソッドを実行するURLで動作が保証されるかどうかを示しています。なお、動作が保証されないURLでは、マルチタブビューなどのLIFFアプリの一部機能が正しく動作しない可能性があります。

liff.init()を実行するURL動作の保証
https://example.com/
https://example.com/path1/
https://example.com/path1/language/
https://example.com/path2/
liff.init()メソッドの実行時に、コンソールに「liff.init() was called with a current URL that is not related to the endpoint URL.」という警告メッセージが表示される

LIFF v2.27.2以降では、動作が保証されないURLでliff.init()メソッドを実行すると、コンソールに警告メッセージが表示されます。

たとえば、LIFFアプリのエンドポイントURLがhttps://example.com/path1/path2/で、liff.init()メソッドを実行するURLがhttps://example.com/path1/の場合、表示される警告メッセージは次のとおりです。

text
liff.init() was called with a current URL that is not related to the endpoint URL.
https://example.com/path1/ is not under https://example.com/path1/path2/

上記の警告メッセージが表示された場合、エンドポイントURLをhttps://example.com/https://example.com/path1/に変更できないか検討してください。これらのURLに変更することで、liff.init()メソッドの動作が保証されます。

liff.init()を1次リダイレクト先URLと2次リダイレクト先URLで1回ずつ実行する

liff.init()メソッドは、1次リダイレクト先URLに付与されるliff.stateaccess_token=xxxなどの情報を元に初期化処理を行います。エンドポイントURLにクエリパラメータやパスが含まれている場合、正しくLIFFアプリを初期化するために、1次リダイレクト先URLと2次リダイレクト先URLで、1回ずつliff.init()メソッドを実行してください。リダイレクトについて詳しくは、『LIFFドキュメント』の「LIFF URLにアクセスしてからLIFFアプリが開くまでの動作について」を参照してください。

URLを操作する処理はliff.init()が完了してから実行する

URLを操作する処理は、liff.init()メソッドが返すPromiseオブジェクトがresolveしてから実行してください。

javascript
// Example using window.location.replace()
liff
  .init({
    liffId: "1234567890-AbcdEfgh", // Use own liffId
  })
  .then(() => {
    // Redirect to another page after the returned Promise object has been resolved
    window.location.replace(location.href + "/entry/");
  });

Promiseオブジェクトがresolveする前に、次のようなURLを操作する処理を実行すると、LIFFアプリを正常に開けない場合があります。

1次リダイレクト先URLの取り扱いに注意する

1次リダイレクト先URLに自動的に付与されるaccess_token=xxxはユーザーのアクセストークン(機密情報)です。Google Analyticsなど外部のロギングツールに、1次リダイレクト先URLを送らないように注意してください。

なお、LIFF v2.11.0以降のバージョンでは、liff.init()メソッドがresolveされたタイミングでURLから機密情報が除外されます。そのため、以下のようにthen()メソッド内でページビューを送信することで、機密情報の漏洩を防ぐことができます。ロギングツールを利用する場合は、LIFFアプリをv2.11.0以降にバージョンアップすることをお勧めします。LIFF v2.11.0の更新内容について詳しくは、『LIFFドキュメント』の「リリースノート」を参照してください。

javascript
liff
  .init({
    liffId: "1234567890-AbcdEfgh", // Use own liffId
  })
  .then(() => {
    ga("send", "pageview");
  });
LIFFアプリのクエリパラメータについて

LIFF URLへのアクセス時やLIFF間遷移時などに、URLに liff.* のようなクエリパラメータが付与されることがあります。

例:

  • liff.state(LIFF URLに指定した追加情報を示す)
  • liff.referrer(LIFF間遷移前のURLを示す。詳しくは、「LIFF間遷移前のURLを取得する」を参照してください。)

上記は、LIFFアプリを正常に動作させるために、SDK側から付与されるクエリパラメータです。 LIFFアプリのURLに独自の処理を行う場合は、LIFFアプリの起動やLIFF間遷移などLIFFアプリの正常な動作を保証するため、liff.initがresolveされるまでliff.*のクエリパラメータを変更しないように設計してください。

LIFFアプリを初期化する前でも実行できるメソッド

以下のプロパティおよびメソッドは、liff.init()メソッドを実行する前でも利用できます。
LIFFアプリを初期化する前にLIFFアプリを動作させている環境を取得したり、LIFFアプリ初期化に失敗した際にLIFFアプリを閉じたりできます。

liff.closeWindow()メソッドは、LIFF SDKバージョンが2.4.0以上の場合のみ、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

構文

javascript
liff.init(config, successCallback, errorCallback);

引数

config

Object

必須

LIFFアプリの設定

config.liffId

String

必須

LIFFアプリID。LIFFアプリをチャネルに追加すると取得できます。詳しくは、「LIFFアプリをチャネルに追加する」を参照してください。
ここで指定したLIFFアプリIDは、liff.idで取得できます。

config.withLoginOnExternalBrowser

Boolean

任意

外部ブラウザでのLIFFアプリ初期化時にliff.login()メソッドを自動で実行するかどうかを、以下のどちらかの値で指定します。デフォルト値はfalseです。

  • true:外部ブラウザでliff.login()メソッドを自動で実行します。
  • false:外部ブラウザでliff.login()メソッドを自動で実行しません。

successCallback

Function

任意

LIFFアプリの初期化に成功したときにデータオブジェクトを返すコールバック

注意

successCallbackは、戻り値のPromiseオブジェクトのresolveと同じタイミングで処理されます。ただし、処理の順番は保証されません。

errorCallback

Function

任意

LIFFアプリの初期化に失敗したときにエラーオブジェクトを返すコールバック

注意

errorCallbackは、戻り値のPromiseオブジェクトのrejectと同じタイミングで処理されます。ただし、処理の順番は保証されません。

戻り値

Promiseオブジェクトが返されます。

エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

liff.getOS()

ユーザーがLIFFアプリを動作させている環境を取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

構文

javascript
liff.getOS();

引数

なし

戻り値

ユーザーがLIFFアプリを動作させている環境が、文字列で返されます。戻り値はユーザーエージェント文字列中のOS名に基づくため、返却される値はブラウザの種類(LIFFブラウザLINE内ブラウザ外部ブラウザ)を問いません。

たとえば、ユーザーがiOSを使用している場合、使用しているブラウザがLIFFブラウザかSafariかは問わず、ios が返却されます。

戻り値説明
iosiOSもしくはiPadOS
androidAndroid
web上記以外

LIFFアプリをサポートするOSやブラウザについては、動作環境を参照してください。

liff.getAppLanguage()

LIFFアプリが動作しているLINEアプリの言語設定を取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

使用条件

LIFF SDKのバージョンが2.24.0以上

動作条件

liff.getAppLanguage()メソッドが正しく動作するには、以下の条件をすべて満たす必要があります。

  • LIFFアプリがLIFFブラウザ上で動作している。
  • LINEアプリのバージョンが14.11.0以上である。

なお、上記の条件を満たさない場合、liff.getAppLanguage()メソッドはliff.getLanguage()メソッドと同じ挙動になります。

構文

javascript
liff.getAppLanguage();

引数

なし

戻り値

LIFFアプリが動作しているLINEアプリの言語設定がRFC 5646に準拠した文字列で返されます。

liff.getLanguage()

liff.getLanguage()メソッドは非推奨です

liff.getLanguage()メソッドは非推奨になりました。LIFFアプリを動作させている環境の言語設定を取得するには、liff.getAppLanguage()メソッドを使用してください。詳しくは、2024年7月23日のニュースを参照してください。

LIFFアプリを動作させている環境の言語設定を取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

構文

javascript
liff.getLanguage();

引数

なし

戻り値

LIFFアプリを動作させている環境のnavigator.languageで取得できる言語設定が、文字列で返されます。

liff.getVersion()

LIFF SDKのバージョンを取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

構文

javascript
liff.getVersion();

引数

なし

戻り値

LIFF SDKのバージョンが、文字列で返されます。

liff.getLineVersion()

ユーザーのLINEバージョンを取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

構文

javascript
liff.getLineVersion();

引数

なし

戻り値

ユーザーがLIFFブラウザでLIFFアプリを開くと、ユーザーのLINEバージョンが文字列で返されます。ユーザーが外部ブラウザでLIFFアプリを開くと、 nullが返されます。

liff.getContext()

LIFFアプリが起動された画面(1対1のトーク、グループトーク、複数人トーク、または外部ブラウザ)に関する情報を取得します。

トークルームの内部識別子の提供は廃止されました

LIFFアプリに対するトークルームの内部識別子(1対1トークID、グループID、トークルームID)の提供は廃止されました。詳しくは、2023年2月6日のニュース、「2023年2月6日をもってLIFFアプリに対するトークルームの内部識別子の提供を廃止しました」を参照してください。

構文

javascript
liff.getContext();

引数

なし

戻り値

各種APIを呼び出すために必要な情報を含むデータオブジェクトが返されます。

type

String

LIFFアプリが起動された画面の種類。以下のいずれかの値が含まれます。

  • utou:1対1のトーク。
  • group:グループトーク。
  • room:複数人トーク。
  • external:外部ブラウザ。
  • none:LINEの1対1のトーク、グループ、複数人トーク、外部ブラウザ以外から起動した場合。例:ウォレットタブ

LIFF間遷移後のLIFFアプリでも、このプロパティが返ります。

userId

String

ユーザーID。typeプロパティが、utouroomgroupnoneまたはexternalの場合に含まれます。ただし、typeプロパティがexternalの場合は、nullが返されることがあります。

liffId

String

LIFF ID。

viewType

String

LIFFアプリの画面サイズ。typeプロパティがexternal以外の場合に、以下のいずれかの値が含まれます。

  • compact
  • tall
  • full

詳しくは、「LIFFアプリをチャネルに追加する」を参照してください。

endpointUrl

String

LIFFアプリのエンドポイントURL。

accessTokenHash

String

SHA256でハッシュ化したアクセストークンの前半部分。アクセストークンの検証に使用されます。

availability

Object

LIFFアプリを起動した環境で、LIFFの機能が使用可能かどうかをavailabilityオブジェクトとして返します。

scope

Array of strings

LIFF SDKの一部のメソッドを利用するために必要なスコープの中で、どのスコープを持っているかを返します。

スコープについて詳しくは、『LIFFドキュメント』の「LIFFアプリをチャネルに追加する」を参照してください。

liff.getContext()メソッドとliff.permission.getGrantedAll()メソッドの違い

liff.getContext()メソッドでは、LIFFアプリのスコープ(※)の一覧を取得します。

一方、liff.permission.getGrantedAll()メソッドでは、LIFFアプリのスコープのうち、ユーザーが権限の付与に同意したスコープの一覧を取得します。

※ LINEログインチャネルの[LIFF]タブにある「Scope」セクションで指定したスコープ

menuColorSetting

Object

LIFFブラウザのヘッダー部分のカラー設定をmenuColorSettingオブジェクトとして返します。

なお、ヘッダー部分のカラー設定の変更は、現在提供していません。

miniAppId

String

含まれないことがあります

LINEミニアプリのCustom Path機能で設定されている文字列が返されます。Custom Path機能について詳しくは、『LINEミニアプリドキュメント』の「Custom Pathを設定する」を参照してください。

miniDomainAllowed

Boolean

LINEミニアプリをminiapp.line.meドメインで利用できるかどうかを返します。

permanentLinkPattern

String

LIFF URLの追加情報の処理方法。concatが返されます。

詳しくは、『LIFFドキュメント』の「LIFFアプリを開く」を参照してください。

utouId

String

廃止

このプロパティは廃止されました。詳しくは、2023年2月6日のニュース、「2023年2月6日をもってLIFFアプリに対するトークルームの内部識別子の提供を廃止しました」を参照してください。

groupId

String

廃止

このプロパティは廃止されました。詳しくは、2023年2月6日のニュース、「2023年2月6日をもってLIFFアプリに対するトークルームの内部識別子の提供を廃止しました」を参照してください。

roomId

String

廃止

このプロパティは廃止されました。詳しくは、2023年2月6日のニュース、「2023年2月6日をもってLIFFアプリに対するトークルームの内部識別子の提供を廃止しました」を参照してください。

例(LIFFブラウザの場合)

例(外部ブラウザの場合)

availabilityオブジェクト

availabilityオブジェクトには、以下のプロパティが含まれます。

shareTargetPicker

Object

LIFFアプリを起動した環境で、liff.shareTargetPicker()が使用可能かどうかをオブジェクトで表します。

liff.shareTargetPicker()の使用可否は、このプロパティではなく、liff.isApiAvailable('shareTargetPicker')で確認することをお勧めします。

multipleLiffTransition

Object

LIFFアプリを起動した環境で、LIFFアプリを閉じずにliff.openWindow()別のLIFFアプリへ遷移することが可能かどうかをオブジェクトで表します。

※LIFF間遷移可否の情報は、このプロパティではなく、liff.isApiAvailable('multipleLiffTransition')で確認することをお勧めします。

subwindowOpen

Object

LIFFアプリを起動した環境で、サブウィンドウが使用可能かどうかをオブジェクトで表します。

scanCode

Object

LIFFアプリを起動した環境で、liff.scanCode()が使用可能かどうかをオブジェクトで表します。

scanCodeV2

Object

LIFFアプリを起動した環境で、liff.scanCodeV2()が使用可能かどうかをオブジェクトで表します。

getAdvertisingId

Object

LIFFアプリを起動した環境で、liff.getAid()が使用可能かどうかをオブジェクトで表します。

なお、liff.getAid()は現在提供していません。

addToHomeScreen

String

LIFFアプリを起動した環境で、liff.addToHomeScreen()が使用可能かどうかをオブジェクトで表します。

なお、liff.addToHomeScreen()は現在提供していません。

bluetoothLeFunction

Object

LIFFアプリを起動した環境で、LINE ThingsのためのBluetooth® Low Energyが使用可能かどうかをオブジェクトで表します。

なお、この機能は現在提供していません。

skipChannelVerificationScreen

Object

LIFFアプリを起動した環境で、「チャネル同意の簡略化」機能を利用できるかどうかをオブジェクトで表します。詳しくは、『LINEミニアプリドキュメント』の「同意画面のプロセスをスキップする」を参照してください。

addToHomeV2

Object

LIFFアプリを起動した環境で、liff.createShortcutOnHomeScreen()が使用可能かどうかをオブジェクトで表します。

liff.createShortcutOnHomeScreen()の使用可否は、このプロパティではなく、liff.isApiAvailable('createShortcutOnHomeScreen')で確認することをお勧めします。

addToHomeHideDomain

Object

ショートカットを、ユーザー端末のホーム画面に追加する画面を表示する際に、エンドポイントURLを非表示にできるかどうかをオブジェクトで表します。

なお、この機能は現在提供していません。

addToHomeLineScheme

Object

LINE URLスキームを指定したショートカットが作成可能かどうかをオブジェクトで表します。

なお、この機能は現在提供していません。

availabilityオブジェクトの共通プロパティ

permission

Boolean

LIFFアプリを起動した環境で、availabilityオブジェクトのプロパティ名で指定された機能が、使用可能かどうかを表します。

  • true:機能は使用可能。
  • false:機能は使用不可。

minVer

String

含まれないことがあります

該当する機能がサポートされているLINEの最小バージョン

maxVer

String

含まれないことがあります

該当する機能がサポートされているLINEの最大バージョン

unsupportedFromVer

String

含まれないことがあります

該当する機能がサポート対象外となったLINEのバージョン

minOsVer

String

含まれないことがあります

該当する機能がサポートされているOSの最小バージョン

maxOsVer

String

含まれないことがあります

該当する機能がサポートされているOSの最大バージョン

unsupportedFromOsVer

String

含まれないことがあります

該当する機能がサポート対象外となったOSのバージョン

menuColorSettingオブジェクト

menuColorSettingオブジェクトには、以下のプロパティが含まれます。

adaptableColorSchemes

Array of strings

常にlightを返します。

lightModeColor

Object

adaptableColorSchemeslightだった場合の、カラー設定をオブジェクトで表します。

darkModeColor

Object

adaptableColorSchemesdarkだった場合の、ヘッダーのカラー設定をオブジェクトで表します。

なお、このヘッダーのカラー設定は現在提供していません。

menuColorSettingオブジェクトの共通プロパティ

iconColor

String

ヘッダーのアイコンの色を#RRGGBBのような16進数カラーコードで表します。

statusBarColor

String

常にwhiteを返します。

titleTextColor

String

ヘッダーのタイトルテキストの色を#RRGGBBのような16進数カラーコードで表します。

titleSubtextColor

String

ヘッダーのサブタイトルテキストの色を#RRGGBBのような16進数カラーコードで表します。

titleButtonColor

String

ヘッダーのボタンの色を#RRGGBBのような16進数カラーコードで表します。

titleBackgroundColor

String

ヘッダーの背景色を#RRGGBBのような16進数カラーコードで表します。

progressBarColor

String

ヘッダーのプログレスバーの色を#RRGGBBのような16進数カラーコードで表します。

progressBackgroundColor

String

ヘッダーのプログレスバーの背景色を#RRGGBBのような16進数カラーコードで表します。

liff.isInClient()

LIFFアプリをLIFFブラウザで動作させているかどうかを取得します。

LIFFアプリ初期化前でも実行できます

このメソッドは、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

構文

javascript
liff.isInClient();

引数

なし

戻り値

liff.isLoggedIn()

ユーザーがログインしているかどうかを取得します。

構文

javascript
liff.isLoggedIn();

引数

なし

戻り値

  • true:ログインしている
  • false:ログインしていない

liff.isApiAvailable()

指定したAPIが、LIFFアプリを起動した環境で使用可能かどうかを確認します。たとえば、APIが対応しているLINEバージョンであることや、APIを呼び出すために特別な同意が必要な場合は同意していることを確認します。

構文

javascript
liff.isApiAvailable(apiName);

引数

apiName

String

必須

LIFFのクライアントAPIの名前。以下のAPI名を指定できます。

multipleLiffTransitionについて

multipleLiffTransitionは、LIFFアプリを閉じずに別のLIFFアプリを開くこと(LIFF間遷移)が可能かどうか、という状態を表すプロパティで、APIの名前ではありません。詳しくは、『LIFFドキュメント』の「LIFFアプリから別のLIFFアプリを開いた場合の動作について(LIFF間遷移)」を参照してください。

戻り値

指定したAPIが、現在の環境で使用可能かどうかが返されます。使用可能の場合はtrueが返されます。使用不可能の場合はfalseが返されます。falseが返される例は以下のとおりです。

  • APIが対応していないLINEバージョンでLIFFアプリを起動した場合
  • 外部ブラウザで利用できないAPIにもかかわらず、外部ブラウザでLIFFアプリを起動した場合
  • 使用するために特別な同意が必要なAPIにもかかわらず、同意していない場合
  • 使用するためにログインが必要なAPIにもかかわらず、ログインしていない場合
  • 使用するためにアクセストークンが必要なAPIにもかかわらず、アクセストークンの有効期限が切れている場合

liff.login()

外部ブラウザおよびLINE内ブラウザ上で、ログイン処理を行います。

注意

LIFFブラウザの場合、liff.init()実行時に自動でログイン処理が実行されるため、liff.login()は利用できません。

LIFFブラウザ内での認可リクエストについて

LIFFブラウザ内でLINEログインによる認可リクエストを行った際の動作は保証されません。また、LIFFアプリを外部ブラウザやLINE内ブラウザで開く場合には、必ず本メソッドでログイン処理を行い、LINEログインによる認可リクエストは行わないでください。

構文

javascript
liff.login(loginConfig);

引数

loginConfig

Object

任意

ログインの設定

loginConfig.redirectUri

String

任意

ログイン後にLIFFアプリで表示するURL。デフォルト値は[エンドポイントURL]に設定したURLです。[エンドポイントURL]の設定方法について詳しくは、『LIFFドキュメント』の「LIFFアプリをチャネルに追加する」を参照してください。

redirectUriに指定したURLが[エンドポイントURL]に設定したURLで始まらない場合、ログイン処理に失敗し、エラー画面が表示されます。

たとえば、[エンドポイントURL]がhttps://example.com/path1/path2?query1=value1の場合、ログイン処理の成否は以下のとおりです。なお、クエリパラメータやURLフラグメントはログイン処理の成否に影響しません。

redirectUri ログイン処理
  • https://example.com/path1/path2?query1=value1
  • https://example.com/path1/path2?query2=value2
  • https://example.com/path1/path2#URL-fragment
  • https://example.com/path1/path2
  • https://example.com/path1/path2/
  • https://example.com/path1/path2/path3
✅ 成功
  • https://example.com/path1
  • https://example.com/
  • https://example.com/path2/path1
❌ 失敗

戻り値

なし

liff.logout()

ログアウトします。

構文

javascript
liff.logout();

引数

なし

戻り値

なし

liff.getAccessToken()

LIFF SDKが取得した「現在のユーザーのアクセストークン」を取得します。

LIFFアプリからサーバーにユーザー情報を送信するときに、このAPIで取得したアクセストークンを利用できます。サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。

アクセストークンの有効期間

アクセストークンの有効期間は、発行後12時間です。なお、ユーザーがLIFFアプリを閉じると、有効期限が切れていなくてもアクセストークンは無効化されます。

LIFF SDKがアクセストークンを取得するタイミング
  • LIFFブラウザでLIFFアプリを起動した場合は、liff.init()を呼び出したときに、LIFF SDKがアクセストークンを取得します。
  • 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがアクセストークンを取得します。
    1. LIFFアプリで、liff.login()を呼び出す。
    2. ユーザーがログインする。
    3. LIFFアプリで、再度liff.init()を呼び出す。

構文

javascript
liff.getAccessToken();

引数

なし

戻り値

現在のユーザーのアクセストークンを文字列で返します。

liff.getIDToken()

LIFF SDKが取得した「現在のユーザーのIDトークン」を取得します。IDトークンは、ユーザー情報を含むJSONウェブトークン(JWT)です。

LIFFアプリからサーバーにユーザー情報を送信するときに、このAPIで取得したIDトークンを利用できます。サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。

スコープを選択してください

LIFFアプリをチャネルに追加するときに、openidスコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、IDトークンを取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。

LIFF SDKがIDトークンを取得するタイミング
  • LIFFブラウザでLIFFアプリを起動した場合は、liff.init()を呼び出したときに、LIFF SDKがIDトークンを取得します。
  • 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがIDトークンを取得します。
    1. LIFFアプリで、liff.login()を呼び出す。
    2. ユーザーがログインする。
    3. LIFFアプリで、再度liff.init()を呼び出す。
メールアドレスを取得できます

LIFFアプリをチャネルに追加するときに、emailスコープを選択し、ユーザーが認可すると、メールアドレスも取得できます。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。

構文

javascript
liff.getIDToken();

引数

なし

戻り値

IDトークンが返されます。

liff.getDecodedIDToken()

LIFF SDKが取得したIDトークンの「ペイロード」を取得します。ペイロードには、ユーザーの表示名、プロフィール画像のURL、メールアドレスなどの情報が含まれます。

LIFFアプリでユーザーの表示名などを利用する場合に、このメソッドを利用してください。

なお取得できる情報はメインプロフィールのみです。ユーザーのサブプロフィールは取得できません。

ユーザー情報をサーバーに送信しないでください

このメソッドで取得したユーザー情報をサーバーに送信しないでください。サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。

スコープを選択してください

LIFFアプリをチャネルに追加するときに、openidスコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、IDトークンを取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。

LIFF SDKがIDトークンを取得するタイミング
  • LIFFブラウザでLIFFアプリを起動した場合は、liff.init()を呼び出したときに、LIFF SDKがIDトークンを取得します。
  • 外部ブラウザでLIFFアプリを起動した場合は、以下の手順を行ったのちに、LIFF SDKがIDトークンを取得します。
    1. LIFFアプリで、liff.login()を呼び出す。
    2. ユーザーがログインする。
    3. LIFFアプリで、再度liff.init()を呼び出す。
メールアドレスを取得できます

LIFFアプリをチャネルに追加するときに、emailスコープを選択し、ユーザーが認可すると、メールアドレスも取得できます。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。

構文

javascript
liff.getDecodedIDToken();

引数

なし

戻り値

IDトークンのペイロードが返されます。

IDトークンのペイロードについて詳しくは、「IDトークンからプロフィール情報を取得する」の「ペイロード」を参照してください。

liff.permission.getGrantedAll()

ユーザーが権限の付与に同意したスコープの一覧を取得します。

このメソッドで取得できるスコープは次のとおりです。

liff.getContext()メソッドとliff.permission.getGrantedAll()メソッドの違い

liff.getContext()メソッドでは、LIFFアプリのスコープ(※)の一覧を取得します。

一方、liff.permission.getGrantedAll()メソッドでは、LIFFアプリのスコープのうち、ユーザーが権限の付与に同意したスコープの一覧を取得します。

※ LINEログインチャネルの[LIFF]タブにある「Scope」セクションで指定したスコープ

構文

javascript
liff.permission.getGrantedAll();

引数

なし

戻り値

Promiseがresolveされると、ユーザーが権限の付与に同意したスコープの配列が渡されます。

エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

liff.permission.query()

ユーザーが指定した権限の付与に同意しているかどうかを確認します。

構文

javascript
liff.permission.query(permission);

引数

permission

String

必須

確認対象の権限。以下のいずれかのスコープを指定します。

戻り値

Promiseオブジェクトが返されます。

Promiseがresolveされると、以下のプロパティを持つオブジェクトが渡されます。

state

String

以下のいずれかの値が含まれます。

  • granted: 権限付与にユーザーが同意済み。
  • prompt: 権限付与にユーザーが未同意。
  • unavailable: 指定したスコープをチャネルが持たないため、利用不可。

liff.permission.requestAll()

LINEミニアプリが要求する権限の「アクセス許可要求画面」を表示します。

アクセス許可要求画面

liff.permission.requestAll()の動作環境

liff.permission.requestAll()LINEミニアプリでのみ動作します。

このメソッドを実行するには、あらかじめLINE Developersコンソールで、[チャネル同意の簡略化]をオンにする必要があります。チャネル同意の簡略化の設定方法について詳しくは、『LINEミニアプリドキュメント』の「「チャネル同意の簡略化」の設定方法」を参照してください。

ユーザーが未同意の権限があるかどうか確認してから実行してください

権限付与にユーザーがすべて同意済みの場合、liff.permission.requestAll()を実行すると、Promiseがrejectされ、LiffErrorが渡されます。そのため、liff.permission.query()を使って、ユーザーが未同意の権限があるかどうかを確認してください。未同意の権限がある場合にのみ、liff.permission.requestAll()を実行するようにしてください。

構文

javascript
liff.permission.requestAll();

引数

なし

戻り値

Promiseオブジェクトが返されます。

エラーレスポンス

チャネル同意の簡略化]がオンになっていない場合や、権限付与にユーザーがすべて同意済みの場合は、Promiseがrejectされ、LiffErrorが渡されます。

liff.getProfile()

現在のユーザーのプロフィール情報を取得します。

なお取得できる情報はメインプロフィールのみです。ユーザーのサブプロフィールは取得できません。

ユーザー情報をサーバーに送信しないでください

このメソッドで取得したユーザー情報をサーバーに送信しないでください。サーバーでユーザー情報を使用する方法について詳しくは、『LIFFドキュメント』の「LIFFアプリおよびサーバーでユーザー情報を使用する」を参照してください。

スコープを選択してください

LIFFアプリをチャネルに追加するときに、profileスコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、プロフィール情報を取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。

構文

javascript
liff.getProfile();

引数

なし

戻り値

Promiseオブジェクトが返されます。

Promiseがresolveされると、ユーザーのプロフィール情報を含むオブジェクトが渡されます。

userId

String

ユーザーID

displayName

String

表示名

pictureUrl

String

画像のURL。ユーザーが設定していない場合は返されません。

statusMessage

String

ステータスメッセージ。ユーザーが設定していない場合は返されません。

エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

liff.getFriendship()

ユーザーとLINE公式アカウントの友だち関係を取得します。

ただし、LIFFアプリが追加されているLINEログインのチャネルに、LINE公式アカウントがリンクされている場合に、そのLINE公式アカウントとの友だち関係のみを取得できます。LINEログインのチャネルに、LINE公式アカウントをリンクする方法については、『LINEログインドキュメント』の「LINEログインしたときにLINE公式アカウントを友だち追加する(友だち追加オプション)」を参照してください。

スコープを選択してください

LIFFアプリをチャネルに追加するときに、profileスコープを選択してください。スコープを選択しなかった場合やユーザーが認可しなかった場合は、友だち関係を取得できません。スコープの選択は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。

構文

javascript
liff.getFriendship();

引数

なし

戻り値

Promiseオブジェクトが返されます。

友だち関係を取得できると、Promiseがresolveされ、友だち関係に関する情報が渡されます。

friendFlag

Boolean

  • true:ユーザーがLINE公式アカウントを友だち追加済みで、ブロックしていない。
  • false:それ以外の場合。
エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

liff.openWindow()

指定したURLをLINE内ブラウザまたは外部ブラウザで開きます。

liff.openWindow()の動作環境

liff.openWindow()の外部ブラウザでの利用は、保証対象外です。

iOS版LINEかつLIFF v2.16.1以前でliff.openWindow()を実行すると、URLフラグメントの末尾に意図しないクエリパラメータが追加されたURLが開かれます

iOS版LINEかつLIFF v2.16.1以前で、urlプロパティにクエリパラメータ(?key=value)が含まれず、かつURLフラグメント(#URL-fragment)が含まれていると、URLフラグメントの末尾に意図しないクエリパラメータが追加されたURLが開かれます。

以下は、liff.openWindow()実行時に開かれるURLの例です。

LIFF SDKバージョンurlプロパティ開かれるURL
v2.16.1https://example.com#URL-fragmenthttps://example.com#URL-fragment?is_liff_external_open_window=false
v2.17.0https://example.com#URL-fragmenthttps://example.com#URL-fragment

構文

javascript
liff.openWindow(params);

引数

params

Object

必須

パラメータオブジェクト

params.url

String

必須

URL。完全なURLで指定します。

params.external

Boolean

任意

指定したURLを外部ブラウザで開くかどうかを、以下のどちらかの値で指定します。デフォルト値はfalseです。

  • true:外部ブラウザで開きます。
  • false:LINE内ブラウザで開きます。

戻り値

なし

liff.closeWindow()

LIFFアプリを閉じます。

LIFFアプリを閉じたときの挙動は、LINEアプリのバージョンやLIFFアプリの設定によって異なります。詳しくは、『LIFFドキュメント』の「LIFFアプリを閉じたときの挙動」を参照してください。

LIFFアプリ初期化前でも実行できます

このメソッドは、LIFF SDKバージョンが2.4.0以上の場合のみ、liff.init()によるLIFFアプリの初期化が終了する前でも実行できます。

注意

liff.closeWindow()の外部ブラウザでの動作は、保証対象外です。

構文

javascript
liff.closeWindow();

引数

なし

戻り値

なし

liff.sendMessages()

ユーザーの代わりに、LIFFアプリが開かれているトークルームにメッセージを送信します。

この機能を利用するには、以下の条件を満たす必要があります。

条件を満たしていない場合、liff.sendMessages()メソッドが利用できず、エラーコード403user doesn't grant required permissions yetエラーが発生します。以下は、エラーが発生する場合の例です。

  • Keepメモの機能を利用してLIFFアプリにアクセスした場合。
  • ウェブサイトのリダイレクト処理などによりLIFFアプリを開くためのURLスキームにアクセスした場合。
  • LIFF間遷移後のLIFFアプリでchat_message.writeスコープが無効になった場合。詳しくは、『LIFFドキュメント』の「LIFF間遷移後の「chat_message.write」スコープについて」を参照してください。
  • ユーザーがchat_message.writeスコープを認可しなかった場合。

なお、LIFFアプリが起動された画面に関する情報は、liff.getContext()メソッドで取得できます。

構文

javascript
liff.sendMessages(messages);

引数

messages

Array of objects

必須

メッセージオブジェクト
最大件数:5
Messaging APIの以下のタイプのメッセージを送信できます。

liff.sendMessages()メソッドによってユーザーからテンプレートメッセージまたはFlex Messageが送信された場合、LINEプラットフォームからWebhookは送信されません。それ以外のメッセージタイプであれば、Webhookは送信されます。liff.sendMessages()メソッドで画像、動画、および音声のメッセージが送信されると、結果として送信されるWebhookイベントのcontentProvider.typeプロパティの値はexternalになります。詳しくは、『Messaging APIリファレンス』の「メッセージイベント」を参照してください。

戻り値

Promiseオブジェクトが返されます。

  • メッセージの送信が成功すると、Promiseがresolveされます。値は渡されません。
  • メッセージの送信が失敗すると、Promiseがrejectされ、LiffErrorが渡されます。

liff.shareTargetPicker()

ターゲットピッカー(グループまたは友だちを選択する画面)を表示し、ターゲットピッカーで選択した相手に、開発者が作成したメッセージを送信します。このメッセージは、ユーザーが送信したかのように、グループまたは友だちに表示されます。

liff.shareTargetPicker()メソッドの使用条件

liff.shareTargetPicker()メソッドを使用するには、以下の条件をすべて満たす必要があります。

スマートフォンの外部ブラウザでliff.shareTargetPicker()メソッドを実行した際に、メールアドレスログインの画面が表示されることがあります

外部ブラウザでターゲットピッカーを表示するには、シングルサインオン(SSO)によるログインセッションが必要です。

自動ログインによるログイン処理では、SSOによるログインセッションが発行されないため、liff.shareTargetPicker()メソッドの実行時にターゲットピッカーが表示されず、代わりにメールアドレスログインの画面が表示されることがあります。

メールアドレスとパスワードを入力してログインすると、SSOによるログインセッションが発行され、ターゲットピッカーが表示されるようになります。

ユーザーがシェアターゲットピッカーでメッセージを送信した人数は、取得できません

ユーザーのプライバシーを保護するため、シェアターゲットピッカーで、何人にメッセージが送信されたかの情報は取得できません。また、提供も行なっておりません。

構文

javascript
liff.shareTargetPicker(messages, options);

引数

messages

Array of objects

必須

メッセージオブジェクト
最大件数:5
Messaging APIの以下のタイプのメッセージを送信できます。

options

Object

任意

シェアターゲットピッカーのオプション

options.isMultiple

Boolean

任意

ユーザーがターゲットピッカーで選択するメッセージ送信先として、複数の送信先を選択可能にするかどうかを、以下のどちらかの値で指定します。デフォルト値はtrueです。

  • true:ユーザーはグループ、友だち、トークの中から、複数の送信先を選択できます。
  • false:ユーザーは友だちの中から、1人のみを送信先として選択できます。
isMultipleにfalseを設定しても、1人の友だちのみにメッセージが送信されることは保証できません

isMultipleプロパティにfalseを設定しても、シェアターゲットピッカーを複数回呼び出すことや、シェア後のメッセージをユーザー側で再度シェアすることで、複数のユーザーへのメッセージ送信が可能です。厳密にユーザーから1人の友だちに対して、一度しかメッセージを送信できないようにする場合には、LIFFアプリ実装時に制限をかける必要があります。

URLを含むメッセージを送信し、URLへのアクセスを制限する場合の例を紹介します。

  1. URLにユニークなトークンを付与し、メッセージを送信します。
  2. メッセージ内のURLへアクセスされた際にサーバー側でトークンを検証し、複数のユーザーからのアクセスを制限します。

戻り値

Promiseオブジェクトが返されます。

  • 正しくメッセージが送信されると、Promiseがresolveされ、以下のプロパティを持つオブジェクトが渡されます。
    status
    String

    常にsuccessです。

  • メッセージを送信する前に、ユーザーがキャンセルしてターゲットピッカーを閉じると、Promiseがresolveされますが、オブジェクトは渡されません。
  • ターゲットピッカーが表示される前に問題が発生した場合は、Promiseがrejectされ、LiffErrorが渡されます。LiffErrorオブジェクトについては、「LIFF SDKのエラー」を参照してください。
注意

Promiseがresolveした場合とrejectした場合のコールバック関数内で、alert()を実行すると一部端末で正しく動作しません。

liff.scanCodeV2()

二次元コードリーダーを起動し、読み取った文字列を取得します。二次元コードリーダーを起動するには、あらかじめLINE Developersコンソールで、 Scan QR をオンにする必要があります。

liff.scanCodeV2()の動作環境

liff.scanCodeV2()は以下の環境で動作します。

  • iOS:iOS14.3以降
  • Android:すべてのバージョン
  • 外部ブラウザ:WebRTC API をサポートするウェブブラウザ
OS バージョン LIFFブラウザ 外部ブラウザ
iOS 11〜14.2 ✅ ※1
14.3以降 ✅ ※2 ✅ ※1
Android すべてのバージョン ✅ ※2 ✅ ※1
PC すべてのバージョン ✅ ※1

※1 WebRTC APIをサポートするウェブブラウザのみ利用できます。

※2 LIFFブラウザの画面サイズがFullの場合のみ利用できます。詳しくは、『LIFFドキュメント』の「LIFFブラウザの画面サイズ」を参照してください。

二次元コードリーダーを起動するには[Scan QR]をオンにしてください

LIFFアプリをチャネルに追加するときに、[Scan QR]をオンにしてください。[Scan QR]の設定は、LIFFアプリ追加後もLINE DevelopersコンソールのLIFFタブで変更できます。

liff.scanCodeV2()の動作仕様

liff.scanCodeV2()は、内部でjsQRという外部ライブラリを使用しています。そのため、liff.scanCodeV2()メソッド実行時に起動する二次元コードリーダーは、jsQRの動作仕様に依存します。なお、使用ライブラリは予告なく更新、変更される可能性があります。

構文

javascript
liff.scanCodeV2();

引数

なし

戻り値

Promiseオブジェクトが返されます。

二次元コードリーダーで文字列が読み取れると、Promiseがresolveされ、読み取った文字列を含むオブジェクトが渡されます。

value

String

二次元コードリーダーで読み取った文字列

エラーレスポンス

Promiserejectされたときは、LiffErrorが渡されます。

liff.scanCode()

liff.scanCode()メソッドは非推奨です

従来のliff.scanCode()メソッドは非推奨になります。二次元コードリーダーを実装する場合は、liff.scanCodeV2()メソッドを使用することをお勧めします。


LINEの二次元コードリーダーを起動し、読み取った文字列を取得します。二次元コードリーダーを起動するには、あらかじめLINE Developersコンソールで、 Scan QR をオンにする必要があります。

iOS版LINEでは使用できません

liff.scanCode()は以下の環境で動作します。

OS バージョン LIFFブラウザ 外部ブラウザ
iOS すべてのバージョン
Android すべてのバージョン
PC すべてのバージョン

技術的な問題があり、iOS版LINEでは、liff.scanCodeundefinedになります。サンプルコードのように、関数の存在を確認してから、使用してください。iOS版LINEや外部ブラウザでも二次元コードリーダーをお使いになりたい場合は、「liff.scanCodeV2()」を参照してください。

二次元コードリーダーを起動するには[Scan QR]をオンにしてください

構文

javascript
liff.scanCode();

引数

なし

戻り値

Promiseオブジェクトが返されます。

LINEの二次元コードリーダーで文字列が読み取れると、Promiseがresolveされ、読み取った文字列を含むオブジェクトが渡されます。

value

String

二次元コードリーダーで読み取った文字列

liff.permanentLink.createUrlBy()

LIFFアプリの任意のページのパーマネントリンクを取得します。

パーマネントリンクの形式:

text
https://liff.line.me/{liffId}/{path}?{query}#{URL fragment}

構文

javascript
liff.permanentLink.createUrlBy(url);

引数

url

String

必須

パーマネントリンクを取得するURL。任意のクエリパラメータやURLフラグメントを追加できます。

戻り値

Promiseオブジェクトが返されます。

Promiseがresolveされると、パーマネントリンクの文字列が渡されます。

エラーレスポンス

パーマネントリンクを取得するURLが、LINE Developersコンソールの[エンドポイントURL]に指定したURLで始まらない場合、Promiseがrejectされ、LiffErrorが渡されます。

たとえば、パーマネントリンクを取得するURL(例:https://example.com/)が、[エンドポイントURL](例:https://example.com/path1?q1=v1)より上の階層の場合、Promiseがrejectされます。

liff.permanentLink.createUrl()

liff.permanentLink.createUrl()は次回メジャーバージョン以降に非推奨になる可能性があります

技術的な問題があり、liff.permanentLink.createUrl()は、次回メジャーバージョン以降に非推奨になる可能性があります。現在のページのパーマネントリンクを取得するには、liff.permanentLink.createUrlBy()を使用することをお勧めします。

現在のページのパーマネントリンクを取得します。

パーマネントリンクの形式:

text
https://liff.line.me/{liffId}/{path}?{query}#{URL fragment}

構文

javascript
liff.permanentLink.createUrl();

引数

なし

戻り値

現在のページのパーマネントリンクが、文字列で返されます。

現在のページのURLがLINE Developersコンソールの[エンドポイントURL]に指定したURLで始まらない場合、LiffError例外が発生します。

liff.permanentLink.setExtraQueryParam()

liff.permanentLink.setExtraQueryParam()は次回メジャーバージョン以降に非推奨になる可能性があります

技術的な問題があり、liff.permanentLink.setExtraQueryParam()は、次回メジャーバージョン以降に非推奨になる可能性があります。現在のページのパーマネントリンクに、任意のクエリパラメータを追加するには、liff.permanentLink.createUrlBy()を使用することをお勧めします。

現在のページのパーマネントリンクに、任意のクエリパラメータを追加できます。

liff.permanentLink.setExtraQueryParam()を実行するたびに、前回追加したクエリパラメータは破棄されます。

追加したクエリパラメータの削除について
  • 追加したクエリパラメータを削除するには、liff.permanentLink.setExtraQueryParam("")を実行します。
  • 追加したクエリパラメータは、ユーザーが別のページに移動すると破棄されます。

構文

javascript
liff.permanentLink.setExtraQueryParam(extraString);

引数

extraString

String

必須

追加するクエリパラメータ

戻り値

なし

liff.use()

プラガブルSDKのLIFF APIや、LIFFプラグインを有効化し、初期化処理を実行します。

プラガブルSDKのLIFF APIの例

LIFFプラグインの例

構文

javascript
liff.use(module, option);

引数

module

Object

必須

プラガブルSDKのLIFF APIのモジュールやLIFFプラグイン。

LIFF APIのモジュールを渡す場合、インスタンス化する必要があります。詳しくは、『LIFFドキュメント』の「プラガブルSDKの使用方法」を参照してください。

LIFFプラグインを渡す場合、LIFFプラグインがクラスのときは、インスタンス化する必要があります。詳しくは、『LIFFドキュメント』の「LIFFプラグインを使用する」を参照してください。

option

Any value

任意

moduleプロパティで指定した、LIFFプラグインに渡す値。LIFFプラグインのinstall()メソッドの第2引数として渡されます。詳しくは、『LIFFドキュメント』の「option」を参照してください。

戻り値

liffオブジェクトが返されます。

liff.i18n.setLang()

LIFF SDKが表示する文言の言語を指定します。

構文

javascript
liff.i18n.setLang(language);

引数

language

String

必須

RFC 5646(BCP 47)で定義されている言語タグ。指定した言語タグの翻訳がない場合は、enがフォールバックとして使用されます。

戻り値

Promiseオブジェクトが返されます。

エラーレスポンス

Promiseがrejectされたときは、LiffErrorが渡されます。

liff.createShortcutOnHomeScreen()

認証済ミニアプリでのみ利用できます

この機能は、認証済ミニアプリでのみ利用できます。未認証ミニアプリの場合、開発用の内部チャネルではテストできますが、公開用の内部チャネルでは利用できません。

LINEミニアプリへのショートカットを、ユーザー端末のホーム画面に追加する画面を表示します。

詳しくは、『LINEミニアプリドキュメント』の「ユーザー端末のホーム画面にLINEミニアプリへのショートカットを追加する」を参照してください。

liff.createShortcutOnHomeScreen()メソッドを実行するタイミング

liff.createShortcutOnHomeScreen()メソッドは、ユーザー体験を損なわないよう、LINEミニアプリ上でのユーザー操作(例:タップ)に対する応答として実行してください。

使用条件

liff.createShortcutOnHomeScreen()メソッドを使用するには、以下の条件をすべて満たす必要があります。

  • LINEミニアプリである。
  • LINEミニアプリのLIFF SDKのバージョンがv2.23.0以上である。
  • ユーザー端末のLINEアプリのバージョンが13.20.0以上である。

動作条件

ユーザー端末のOSがiOSの場合、liff.createShortcutOnHomeScreen()メソッドが動作する条件は以下のとおりです。動作しない環境においてこのメソッドを実行すると、エラーページが表示されます。

デフォルトのブラウザiOSのバージョン動作するかどうか
Safariすべてのバージョン動作する
Chrome16.4以降動作する
Safari、Chrome以外のブラウザ16.4以降動作は保証されない
Safari以外のブラウザ16.4未満動作しない

たとえば、iOS 16.4未満において、Chromeでliff.createShortcutOnHomeScreen()メソッドを実行した場合は、以下のエラーページが表示されます。

構文

javascript
liff.createShortcutOnHomeScreen(params);

引数

params

Object

必須

パラメータオブジェクト

params.url

String

必須

URL。以下のURLを指定できます。

戻り値

Promiseオブジェクトが返されます。

ショートカット追加画面が表示されると、Promiseがresolveされます。値は渡されません。

なお、ユーザーが端末のホーム画面にLINEミニアプリへのショートカットを実際に追加したかどうかは確認できません。

エラーレスポンス

Promiserejectされたときは、LiffErrorが渡されます。