ユーザがLIFFアプリと紐付いた公式アカウントと友達になっているかどうかを確認する

2021.09.09

吉川@広島です。

LIFFアプリ開発において、LINEログインチャネルと公式アカウント(ボット)をリンクすることができます。

LINEログインしたときにLINE公式アカウントを友だち追加する(ボットリンク) | LINE Developers

LIFFアプリと公式アカウントを紐付けるイメージですね。

ここで、例えば

  • 「弊社の公式アカウントと友だちになって頂ければ、○○の特典をプレゼントします」

というような要件を実現するために、

  • ログインユーザが公式アカウントと友だちになっているかどうか

をLIFFアプリ上のロジックとして確認したい場合があります。そのような時は下記の2つの方法のどちらか、または両方を組み合わせて使うことになります。

前提

  • LIFF SDKをCDNで組み込んだWebアプリ(LIFFアプリ)を用意する
  • LIFFアプリと公式アカウントを紐付ける
  • LINE上で公式アカウントと友だちになっておく

以下の方法は上記を満たしているものとします。

LIFFアプリで確認する(クライアント)

LIFFアプリフロントエンド上で確認したい場合は、LIFF SDKのgetFriendShipメソッドが使えます。

LIFF v2 APIリファレンス | LINE Developers

サンプルで用意したLIFFアプリをGoogle Chromeで開き、Developer Toolsを立ち上げ、Consoleタブで下記を実行しました。

window.liff.getFriendship().then(v => console.log(v))

すると、以下の結果が得られました。

{friendFlag: true}

自分と公式アカウントが友だちであるという情報が取得できていますね。

LINE APIで確認する(サーバ)

サーバ側で確認したい場合は、下記のAPIを使うことになります。

LINEログイン v2.1 APIリファレンス | LINE Developers

VSCode REST Clientを使って検証します。

GET https://api.line.me/friendship/v1/status
Authorization: Bearer {LINE_ACCESS_TOKEN}

すると下のように返ってきました。

{
  "friendFlag": true
}

先ほどと同じ構造のレスポンスが得られますね。

実際にはクライアントからの値をそのまま信用できない場合が多いと思いますので、サーバ側での確認も必須になってくるかと思います。