自社サービスのユーザー ID と LINE ユーザー ID を紐付けるアーキテクチャの紹介

自社サービスのユーザー ID と LINE のユーザー ID を紐付ける 3 つのアーキテクチャを紹介します。
2022.08.23

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

自社サービスのユーザー ID と LINE のユーザー ID を紐付けると、より効果的なマーケティングを行うことや UX を向上させることができます。

例えば小売業の場合、POS データ内に存在するユーザー ID(会員証の ID など)と LINE のユーザー ID を紐づけることで、ユーザーの購買情報に基づいた LINE のプッシュ通知を送ることができます。LINE のプッシュ通知はメールと違い開封率も高いため、情報を届けたいユーザーに効果的に情報を届けることができます。通知するための条件は、ユーザーの端末に LINE がインストールされ LINE 公式アカウントと友達になっていることであり、企業にとって通知するためのハードルが低いところも嬉しいところかと思います。

上記のような施策を実現するためのには、自社サービスのユーザー ID と LINE のユーザー ID との紐づける必要があります。今回はそれを実現する方法を 3 つほど紹介したいと思います。なお、紐付けを行うためのアプリケーションは LINE ミニアプリ/LIFF アプリ(以下、便宜上 LINE ミニアプリとします)であることを前提とします。

今回紹介する方法以外にも何かいい方法があれば、コメントで教えていただけると嬉しいです。

方法 1: OAuth 2.0/OpenID Connect を利用する

OAuth 2.0/OpenID Connect を利用し取得したIDを紐づける方法になります。こちらの方法では LINE ミニアプリのバックエンドシステムには自社の ID 基盤の ID/PW は送信されず、AccessToken/IDToken が送信されるため、セキュアに 自社の ID を取得/検証し LINE のユーザー ID との紐付けを行うことができます。

2 のリクエストでは、自社の ID 基盤で取得した Token に加えて、liff.init()で取得した LINE の Token 情報を送信します。Authorization ヘッダーに LINE の Token 情報を、Body には自社の ID 基盤で取得した Token 情報を付与するイメージです。

自社の ID 基盤が OAuth 2.0/OpenID Connect のエンドポイントを持っている場合、この方式を選択するのが良いでしょう。 ただし、この方式は LIFF SDK に依存する部分もあるため、(そうなる可能性はかなり低いと思っていますが) LIFF SDK のバージョンアップなどによりうまく動作しなくなる可能性はあります。

方法 2: LINE ミニアプリのバックエンドから自社の ID 基盤の API を呼び出す

LINE ミニアプリのバックエンドシステムから自社の ID 基盤の API を呼び出し ID を検証する方法になります。こちらの方法では LINE ミニアプリ上で ID を検証するための情報を入力してもらう必要があります。

この方式の場合、以下、2 点検討する必要があります。

  • どうやって API を繋ぎこむか
    • 経路をどうするのか(インターネット経由 or 専用線)
    • リクエストの認可をどうするのか(Client Credentials Flow , API Key など)
  • 何を持って認証OKとするのか

特に後者に関しては深く検討する必要があります。他人の情報で紐づけできてしまう可能性、仮にそうなった際のリスクなどを考慮した上でチェック項目(ユーザーの入力項目)を選定しましょう。

方法 3: LINE ミニアプリのバックエンドシステムに自社の ID 基盤情報を事前に流し込む

LINE ミニアプリのバックエンドシステムに事前に自社の ID 基盤の情報を流し込むことにより、バックエンドシステム内だけで ID を検証する方法になります。

こちらの方法に関しても「何を持って認証OKとするのか」は検討する必要があります。

こちらの方法の場合、自社の ID 基盤側はキーとなる情報を CSV 等にエクスポートしバックエンドシステムに連携するだけで OK です。そのため、何もない状態から ID 連携を実現する際のコストは一番低くなることが多いです。ただし、データの反映にはタイムラグが発生するためユーザーに不便を強いる可能性があります。また、ID 基盤側の都合により更新差分での取り込みができない場合は、都度テーブルを洗い替える必要が出てくるので、 DB への取り込みコストなども意識する必要があります。

まとめ

方法 おすすめ度 コメント
方法 1: OAuth 2.0/OpenID Connect を利用する ★★★ 一番シンプルであり ID 基盤が OAuth 2.0/OpenID Connect に対応しているのであればこれ一択
方法 2: LINE ミニアプリのバックエンドから自社の ID 基盤の API を呼び出す ★★ 「API の繋ぎ込みは専用線で」みたいな話が出てくると厳しいか
方法 3: LINE ミニアプリのバックエンドシステムに自社の ID 基盤情報を事前に流し込む システムとして実現するのは容易である。一方、ユーザーへ不便を強いる可能性は一番高い。提供するアプリケーション次第か

個人的には方法1がおすすめです。ですが、既存の ID 基盤が OAuth 2.0/OpenID Connect に対応しているケースは多くないような気がしています。そのような場合は、ユーザーへの影響/開発コスト/システムの複雑性などを鑑み最適な方法を選択していただければと思います。

自分たちだけで構築するのは難しい/もう少し自分たちのシステムに寄り添ってアドバイスが欲しい、といった場合は、お気軽に弊社のLINEサービス総合支援までお問い合わせしていただければと思います。