LIFF について


はじめに

これは LIFF を使用して、個人的に気になった点を検証し、まとめているものです。
一部に間違いなどがある可能性がありますので、何かありましたら細かい事でも指摘していただけると助かります。

検証項目と結果

URLスキームを踏むだけで送信されてしまうものは可能か?

→可能

サンプル
liff.init(data => {
    liff.sendMessages([
        {
            type:'text',
            text:'Test'
        }
    ]);
    liff.closeWindow();
});

(LIFF-APPが登録されているチャネルを友達に追加していない場合には初回利用には認証が必要だが、)実際にこのコードで URL スキームを踏むだけで送信され、自動的に閉じられてしまった。ただ、実際に送信されるためにはトークルーム上で URL スキームを踏む必要があり、スパム的な利用は不可能と思われる。幼稚なイタズラ等に利用されない事を願う。

GETパラメータは利用可能か?

→可能
URLスキームに付ける事で送信できる。
(例: line://app/*************?test=hello

メッセージオブジェクト
{
    type: 'text',
    text:location.search.substring(1)
}

メッセージオブジェクトをこれにすることで、test=hello が実際に送信された。

その他の目的に利用可能か?

→△
メッセージや画像等の送信以外の目的には向かないと思われる。
というのも、何かデータを他のサーバに送信する際、個人を識別できるのは userId のみとなってしまい、場合によってはなりすましが可能になってしまう。(もちろんこれは LIFF ではなく、他の問題だが)。
よって、あくまでそのページ内で完結するものにする必要がある。
もちろんアイデアによっては画期的なものができる可能性は大いにある。

→○
浅はかだった。先程自分でパラメータを渡せることを検証していたのに……。
予めトークンや別に発行したユーザーID等をパラメータに付加しておけば、データを他のサーバに送信する事は可能。

同じurlを異なるviewで登録して、それぞれをLIFFアプリ内から起動可能か?

→△
まずこのタイトルで伝わっているのかわからないので、やろうとしたことを簡単に。
まず view を tall で登録したLIFFアプリを開いて、中にあらかじめ張っておいた 同じLIFFアプリだけど view が full のリンクをクリック。

希望した挙動→(再読み込みを挟んで)そのままウィンドウのサイズだけが変わる

実際の挙動 → ただ新しくLIFFアプリが上にかぶせて表示された

よくよく考えたら当たり前の事だった(のかもしれない)。
要望したらそのうち Window のサイズを変更する機能を付けてくれるかもしれない。

いくつまで同時にLIFFアプリを起動できるか?

LIFFアプリの中に URL スキームのリンクを設置し、多重起動を検証した。
途中で色々と恐ろしくなってやめたが、少なくとも20個はどんどん積み重ねられた。ので、恐らくその手の心配は不要。

その他

この先、確認できた事があれば随時追加したいと思う。