# LIFF v1 APIリファレンス

# クライアントAPI

# 動作環境

LIFF v1をサポートするOSとLINEのバージョンは以下のとおりです。

  • iOS:iOS 8以降。iOS 9以降ではWKWebView、iOS 9未満ではUIWebViewが使用されます。
    • Safari 8以降
  • Android:4.2(Jelly Bean MR1、API level 17)以降
    • Chrome 33以降
  • LINE:バージョン7.14以降
OpenChatでのLIFFアプリの利用はサポートされていません

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

# LIFF SDKのエラー

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

エラーの例

# LiffErrorオブジェクト

code

String

コード

message

String

メッセージ。定義されたメッセージが存在する場合に返されます。

# エラー内容

コード メッセージ 説明
INIT_FAILED Failed to init LIFF SDK LIFF SDKのJavaScriptリソースをロードできませんでした。
INIT_FAILED Current environment is not supported. Please open it with LINE サポートされていない環境でLIFFアプリを開こうとしました。
INIT_FAILED Could not authenticate LIFF app JSON Webトークン(JWT)が無効または存在しません。LINEでLIFFを起動してください。また、JWTは必ず指定してください。
INVALID_ARGUMENT - 引数が無効です。
INTERNAL_ERROR - 内部エラーです。
THINGS_NO_LINKED_DEVICES There are no linked devices. デバイスがありません。
BLUETOOTH_CONNECT_FAILED Failed to connect to device. デバイスとの接続に失敗しました。
BLUETOOTH_ALREADY_CONNECTED The device is already connected. デバイスは接続済みです。
BLUETOOTH_CONNECTION_LOST The device has been disconnected. デバイスが接続されていません。
BLUETOOTH_UNSUPPORTED_OPERATION The operation is not supported on this characteristic. 指定したcharacteristicでは、指定した操作がサポートされていません。
BLUETOOTH_SERVICE_NOT_FOUND The service is not found in the GATT server. 指定したサービスが、GATTサーバーに存在しません。
BLUETOOTH_CHARACTERISTIC_NOT_FOUND The characteristic is not found in the service. 指定したcharacteristicが、サービスに存在しません。

# liff.init()

LIFFアプリを初期化します。このメソッドを実行すると、LIFF SDKの他のメソッドを実行できるようになります。

リクエストの例

# 構文

liff.init(successCallback, errorCallback)

# 引数

successCallback

Function

必須

呼び出しの成功時にデータオブジェクトを返すコールバック

errorCallback

Function

必須

呼び出しの失敗時にエラーオブジェクトを返すコールバック

# 戻り値

コールバックの第一引数に、各種APIを呼び出すために必要な情報を含むデータオブジェクトが渡されます。

戻り値の例

# データオブジェクト

language

String

LINEの言語設定

context.type

String

コンテキストのタイプ。LINE内でLIFFアプリが開かれた場所を示します。以下のいずれかの値が含まれます。

  • utou:1対1のトーク
  • room:トークルーム
  • group:グループ
  • none:トーク画面以外

context.viewType

String

LIFFアプリの画面サイズ。以下のいずれかの値が含まれます。

  • compact
  • tall
  • full

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

context.userId

String

ユーザーID。

context.utouId

String

1対1トークID。context.typeプロパティがutouの場合に含まれます。

context.roomId

String

トークルームID。context.typeプロパティがroomの場合に含まれます。

context.groupId

String

グループID。context.typeプロパティがgroupの場合に含まれます。

# liff.openWindow()

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

リクエストの例

# 構文

liff.openWindow(params)

# 引数

# paramsオブジェクト

url

String

必須

URL。絶対パスで指定します。

external

Boolean

任意

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

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

# 戻り値

なし

# liff.getAccessToken()

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

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

アクセストークンの有効性

ユーザーがLIFFアプリを閉じると、アクセストークンは無効化されます。

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

リクエストの例

# 構文

liff.getAccessToken()

# 引数

なし

# 戻り値

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

# liff.getProfile()

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

リクエストの例

# 構文

liff.getProfile(): Promise<Object>

# 引数

なし

# 戻り値

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

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

userId

String

ユーザーID

displayName

String

表示名

pictureUrl

String

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

statusMessage

String

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

このメソッドは内部でaxiosを使用して、Social APIを呼び出します。エラー制御についてはaxiosのドキュメントと『Social APIリファレンス』の「ステータスコード」を参照してください。

ユーザーのプロフィール情報の例

# liff.sendMessages()

ユーザーの代わりに、LIFFアプリが開かれているトーク画面にメッセージを送信します。トーク画面以外でLIFFアプリが開かれた場合は、メッセージは送信できません。

ウェブブラウザからLIFFアプリを開いたときの制限

LINE URLスキームhttps://line.me/R/app/{liffId}を使ってウェブブラウザからLIFFアプリを開いた場合は、liff.sendMessages()メソッドを実行してもメッセージを送信できません。

リクエストの例

# 構文

liff.sendMessages(messages)

# 引数

messages

Objectの配列

必須

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

ボットのLINE公式アカウントが参加しているトークでメッセージが送信されると、LINEプラットフォームからボットサーバーにWebhookイベントが送信されます。liff.sendMessages()メソッドで画像、動画、および音声のメッセージが送信されると、結果として送信されるWebhookイベントのcontentProvider.typeプロパティの値はexternalになります。詳しくは、『Messaging APIリファレンス』の「メッセージイベント」を参照してください。

# 戻り値

メッセージの送信が成功した場合は、戻り値はありません。

このメソッドは内部でaxiosを使用して、LINEプラットフォームを呼び出します。エラー制御についてはaxiosのドキュメントと以下の「ステータスコード」を参照してください。

# ステータスコード
ステータスコード 説明
400 メッセージが無効です。
401 認証に失敗しました。
403 アクセストークンに適切な権限がありません。

# liff.closeWindow()

LIFFアプリを閉じます。

リクエストの例

# 構文

liff.closeWindow()

# 引数

なし

# 戻り値

なし

# liff.initPlugins()

プラグインを有効化します。

たとえば、Bluetoothプラグインを有効化すると、Bluetoothプラグインが提供するクライアントAPI(liff.bluetooth.*)が使用できます。

リクエストの例

# 構文

liff.initPlugins(pluginList: Array<String>): Promise<void>

# 引数

pluginNames

Stringの配列

必須

プラグインの名前。以下のいずれかの値を指定します。

  • bluetooth
    ※なお、Bluetoothプラグインは、Android版のLINEまたはiOS版のLINE 9.19.0未満の場合のみ、有効化できます。iOS版のLINE 9.19.0以降では 有効化に失敗し、FORBIDDENエラーが返されます。

# 戻り値

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

プラグインの有効化が成功すると、Promiseがresolveされます。

プラグインの有効化に失敗したときは、Promiseがrejectされ、エラー情報が渡されます。

# liff.bluetooth.getAvailability()

iOS版LINEバージョン9.19.0以降では使用できません

技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.getAvailability()の提供を一時停止しています。

Bluetoothプラグインが利用できるかどうかを確認します。このメソッドを実行すると、以下の内容が確認されます。

  • チャネルに追加したLIFFアプリのBluetoothサポートの有無

    注:チャネルに追加したLIFFアプリのBLE機能を有効にしていないと、Bluetoothプラグインは有効化できません。

  • スマートフォンのBluetooth設定

  • ユーザーがLINE Thingsの利用規約に同意していること

  • ユーザーがLINEをAndroidで使用している場合は、位置情報の取得権限

注:あらかじめliff.initPlugins()を使用して、Bluetoothプラグインを有効化してください。

リクエストの例

# 構文

liff.bluetooth.getAvailability(): Promise<Boolean>

# 引数

なし

# 戻り値

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

Bluetoothプラグインが利用できるかどうかが確認されると、Promiseがresolveされ、Bluetoothプラグインが利用できるかどうかを示すBooleanオブジェクトが渡されます。

# liff.bluetooth.requestDevice()

iOS版LINEバージョン9.19.0以降では使用できません

技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.requestDevice()の提供を一時停止しています。

連携済みのデバイスをスキャンし、情報を取得します。

フィルターを使って、アドバタイズメントパケットを受け入れるデバイスを制限できます。

注:あらかじめliff.initPlugins()を使用して、Bluetoothプラグインを有効化してください。

リクエストの例

# 構文

liff.bluetooth.requestDevice(options?: RequestDeviceOptions): Promise<BluetoothDevice>;

# 引数

options

Object

任意

フィルターを表すRequestDeviceOptionsオブジェクト。省略したときは、すべてのデバイスからのアドバタイズメントパケットを受け入れます。

# データオブジェクト
# RequestDeviceOptionsオブジェクト

filters

Objectの配列

必須
# LINEBluetoothRequestDeviceFilterオブジェクト

deviceId

String

必須

アドバタイズメントパケットを受け入れるデバイスのデバイスID

# 戻り値

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

連携済みのデバイスをスキャンし、情報を取得できると、Promiseがresolveされ、デバイスの情報を示すBluetoothDeviceオブジェクトが渡されます。

# データオブジェクト
# BluetoothDeviceオブジェクト

id

String

必須

デバイスID

name

String

任意

デバイス名

gatt

Object

任意

watchingAdvertisements

Boolean

必須

アドバタイズメントパケットの監視状況(※)

メソッド 戻り値 説明
watchAdvertisements Promise <void> アドバタイズメントパケットの受け入れを開始します。(※)
unwatchAdvertisements void アドバタイズメントパケットの受け入れを停止します。(※)
addEventListener void イベントリスナーを登録します。advertisementreceivedイベント(※)とgattserverdisconnectedイベントに、イベントリスナーを登録できます。
removeEventListener void 登録済みのイベントリスナーを削除します。advertisementreceivedイベント(※)とgattserverdisconnectedイベントに登録したイベントリスナーを削除できます。

※試験的に実装している機能です。これらの機能は予告なく変更、または停止される可能性があります。

# BluetoothRemoteGATTServerオブジェクト

デバイスと通信するには、GATTサーバー(汎用アトリビュートプロファイルサーバー)を表すBluetoothRemoteGATTServerオブジェクトを使用します。

liff.bluetooth.requestDevice()実行後、Promiseがresolveすると、BluetoothDeviceオブジェクトのgattプロパティから、BluetoothRemoteGATTServerにアクセスできます。

device

Object

必須

connected

Boolean

必須

接続している場合はtrue。接続していない場合はfalse

メソッド 戻り値 説明
connect Promise <BluetoothRemoteGATTService> デバイスと接続します。
disconnect void デバイスのGATTサーバーから切断します。
getPrimaryService( serviceUUID: string ) Promise <BluetoothRemoteGATTService> GATTサーバーのプライマリサービスを取得します。serviceUUIDには、128ビットのUUIDを指定します。
注:このメソッドはUUIDを検証しません。UUIDの検証は、characteristicの読み込み、書き込み、通知の開始、通知の停止を実行する際に行われます。
# BluetoothRemoteGATTServiceオブジェクト

BluetoothRemoteGATTServiceオブジェクトは、characteristicを取得するためのオブジェクトです。

device

Object

必須

uuid

String

必須

GATT Service UUID

メソッド 戻り値 説明
getCharacteristic( characteristicUUID: string ) Promise <BluetoothRemoteGATTCharacteristic> characteristicを取得します。characteristicUUIDには、128ビットのUUIDを指定します。
注:このメソッドはUUIDを検証しません。UUIDの検証は、characteristicの読み込み、書き込み、通知の開始、通知の停止を実行する際に行われます。
# BluetoothRemoteGATTCharacteristicオブジェクト

BluetoothRemoteGATTCharacteristicオブジェクトは、デバイスのcharacteristicの読み込み、書き込み、通知の開始、通知の停止を実行するためのオブジェクトです。

service

Object

任意

uuid

String

必須

UUID

value

Object

任意
メソッド 戻り値 説明
readValue Promise <DataView> characteristicの値を読み取ります。
writeValue( value: BufferSource ) Promise <void> characteristicに値を書き込みます。
startNotifications Promise <BluetoothRemoteGATTCharacteristic> characteristic変更の通知を開始します。
stopNotifications Promise <BluetoothRemoteGATTCharacteristic> characteristic変更の通知を停止します。
addEventListener void イベントリスナーを登録します。targetプロパティを含むcharacteristicvaluechangedイベントに、イベントリスナーを登録できます。
removeEventListener void 登録済みのイベントリスナーを削除します。characteristicvaluechangedイベントに登録したイベントリスナーを削除できます。

注:readValue()メソッド、writeValue()メソッド、startNotifications()メソッド、stopNotifications()メソッドは、UUIDとプロパティを検証します。存在しないUUIDやプロパティを指定した場合は、エラーが発生します。

リクエストの例

# イベント

# advertisementreceivedイベント

アドバタイズメントパケットを受信すると、advertisementreceivedイベントが発生します。

注:advertisementreceivedイベントは、試験的に実装している機能です。この機能は予告なく変更、または停止される可能性があります。

device

Object

必須

name

String

任意

デバイス名

rssi

Number

任意

RSSI

manufacturerData

Object

任意

Map<Number, DataView>オブジェクト。会社識別コード(Company Identifier Code)をDataViewオブジェクトにマップしたデータです。

# gattserverdisconnectedイベント

さまざまな理由でBluetooth接続が切断されると、gattserverdisconnectedイベントが発生します。必ずイベントリスナーを登録してください。

リクエストの例

# characteristicvaluechangedイベント

characteristicが変更されると、characteristicvaluechangedイベントが発生します。

# liff.bluetooth.referringDevice

iOS版LINEバージョン9.19.0以降では使用できません

技術的な問題があり、iOS版LINEバージョン9.19.0以降では、liff.bluetooth.referringDeviceの提供を一時停止しています。

LIFFアプリがデバイス経由で起動された場合、liff.bluetooth.referringDeviceに、そのデバイスの情報を示すBluetoothDeviceオブジェクトが設定されます。

# サーバーAPI

# チャネルアクセストークンを準備する

LIFFのサーバーAPIを利用する場合は、チャネルアクセストークンが必要です。

# Messaging APIのチャネルの場合

LINE Developersコンソールでチャネルアクセストークンを発行します。

Messaging APIのチャネルを選択し、[Messaging API設定]タブの[チャネルアクセストークン(ロングターム)]の[発行]をクリックすると、チャネルアクセストークンが発行されます。

このトークンの有効期間は非常に長く、期限切れを考慮する必要がありません。

# LINEログインのチャネルの場合

HTTP POSTリクエストを/v2/oauth/accessTokenエンドポイントに送信して、LINEログインのチャネルのチャネルアクセストークンを発行します。

詳しくは、『Messaging APIリファレンス』の「チャネルアクセストークンを発行する」を参照してください。

# LIFFアプリをチャネルに追加する

LIFFアプリをチャネルに追加します。チャネルごとに、最大30件のLIFFアプリを追加できます。

リクエストの例

# HTTPリクエスト

POST https://api.line.me/liff/v1/apps

# リクエストヘッダー

Authorization

Bearer {channel access token}
チャネルアクセストークンについて詳しくは、「チャネルアクセストークンを準備する」を参照してください。

Content-Type

application/json

# リクエストボディ

view.type

String

必須

LIFFアプリの画面サイズ。以下のいずれかの値を指定します。

  • compact:デバイスの画面の高さの50%。
  • tall:デバイスの画面の高さの80%。
  • full:デバイスの画面の高さの100%。

view.url

String

必須

LIFFアプリを実装したウェブアプリのURL(エンドポイントURL)。URLスキームはhttpsである必要があります。なお、エンドポイントURLにはドメインのみを指定してください。パスやクエリパラメーターはサポートしていません。

description

String

任意

LIFFアプリの名前

features.ble

Boolean

任意

LINE ThingsのためにBluetooth® Low Energyに対応させる場合はtrue。対応させない場合はfalse

# レスポンス

ステータスコード200と以下のプロパティを含むJSONオブジェクトを返します。

liffId

String

LIFFアプリID

レスポンスの例

# エラーレスポンス

以下のいずれかのステータスコードを返します。

ステータスコード 説明
400 以下のどちらかです。
  • リクエストに無効な値が含まれています。
  • チャネルに追加できるLIFFアプリ数の上限に達しています。
401 認証に失敗しました。

# LIFFアプリの設定を更新する

LIFFアプリの設定を、部分的に更新します。

リクエストの例

# HTTPリクエスト

PUT https://api.line.me/liff/v1/apps/{liffId}

# リクエストヘッダー

Authorization

Bearer {channel access token}
チャネルアクセストークンについて詳しくは、「チャネルアクセストークンを準備する」を参照してください。

Content-Type

application/json

# パスパラメータ

liffId

更新するLIFFアプリのID

# リクエストボディ

view.type

String

任意

LIFFアプリの画面サイズ。以下のいずれかの値を指定します。

  • compact:デバイスの画面の高さの50%。
  • tall:デバイスの画面の高さの80%。
  • full:デバイスの画面の高さの100%。

view.url

String

任意

LIFFアプリを実装したウェブアプリのURL(エンドポイントURL)。URLスキームはhttpsである必要があります。なお、エンドポイントURLにはドメインのみを指定してください。パスやクエリパラメーターはサポートしていません。

description

String

任意

LIFFアプリの名前

features.ble

Boolean

任意

LINE ThingsのためにBluetooth® Low Energyに対応させる場合はtrue。対応させない場合はfalse

注:リクエストボディに指定しなかったプロパティは変更されません。

# レスポンス

ステータスコード200を返します。

# エラーレスポンス

以下のいずれかのステータスコードを返します。

ステータスコード 説明
401 認証に失敗しました。
404 以下のどちらかです。
  • 指定したLIFFアプリは存在しません。
  • 指定したLIFFアプリは別のチャネルに追加されています。

# すべてのLIFFアプリを取得する

チャネルに登録されているすべてのLIFFアプリの情報を取得します。

リクエストの例

# HTTPリクエスト

GET https://api.line.me/liff/v1/apps

# リクエストヘッダー

Authorization

Bearer {channel access token}
チャネルアクセストークンについて詳しくは、「チャネルアクセストークンを準備する」を参照してください。

# レスポンス

ステータスコード200と以下のプロパティを含むJSONオブジェクトを返します。

apps

Objectの配列

レスポンスの例

# LIFFアプリオブジェクト

liffId

String

LIFFアプリID

view.type

String

LIFFアプリの画面サイズ。以下のいずれかの値が含まれます。

  • compact:デバイスの画面の高さの50%。
  • tall:デバイスの画面の高さの80%。
  • full:デバイスの画面の高さの100%。

view.url

String

LIFFアプリを実装したウェブアプリのURL(エンドポイントURL)

description

String

LIFFアプリの名前

features.ble

Boolean

LINE ThingsのためにBluetooth® Low Energyに対応している場合はtrue。対応しない場合はfalse

# エラーレスポンス

以下のいずれかのステータスコードを返します。

ステータスコード 説明
401 認証に失敗しました。
404 チャネルにLIFFアプリがありません。

# LIFFアプリをチャネルから削除する

LIFFアプリをチャネルから削除します。

リクエストの例

# HTTPリクエスト

DELETE https://api.line.me/liff/v1/apps/{liffId}

# リクエストヘッダー

Authorization

Bearer {channel access token}
チャネルアクセストークンについて詳しくは、「チャネルアクセストークンを準備する」を参照してください。

# パスパラメータ

liffId

削除するLIFFアプリのID

# レスポンス

ステータスコード200を返します。

# エラーレスポンス

以下のいずれかのステータスコードを返します。

ステータスコード 説明
401 認証に失敗しました。
404 以下のどちらかです。
  • 指定したLIFFアプリは存在しません。
  • 指定したLIFFアプリは別のチャネルに追加されています。