Salesforceを会員・顧客基盤にする|LINEログインから配信まで、標準と自作の境目

LINEログインはSalesforceの認証プロバイダーで受け、会員と結ぶ登録ハンドラーは自分で書きます。配信はMarketing Cloud EngagementのGroupConnectでContactKeyをそろえます。

この記事をシェア:
目次 クリックで開く

この記事の要点

  1. Salesforce に LINE 専用のログイン設定はありません。両社の公式の説明を合わせると、認証プロバイダーの「OpenID Connect」に LINE ログインのチャネルを登録する形になります(Apex のカスタム認証プロバイダーで作る道もあります)。
  2. ログインしてきた人を既存の会員と結ぶ処理は、登録ハンドラーに自分で書きます。OpenID Connect の認証プロバイダーは IDトークンの署名を検証しないので、IDトークンの値を照合に使うなら自分で確かめます。
  3. 配信は Marketing Cloud Engagement の GroupConnect です。友だちの ContactKey はシステムが振るので、会員の ContactKey に取り込み直します。

LINE ログインから配信まで、同じ人をどこで結ぶか

LINE ログインIDトークンの sub が LINE のユーザーID
認証プロバイダーSalesforce の OpenID Connect
登録ハンドラー会員を探して結ぶ。自分で書く
取引先責任者ユーザーIDを外部IDの項目に
GroupConnectAddress ID(LINE UID)に配信

LINE ログインのチャネルと、GroupConnect に登録する LINE公式アカウントを同じプロバイダーに置けば、ログインで受けるユーザーIDと配信の宛先が同じ値になる

出典:LINE Developers「IDトークンからプロフィール情報を取得する」、Salesforce ヘルプ「OpenID Connect を使用した認証プロバイダーの設定」、「RegistrationHandler Interface」、「Data View: GroupConnect Contact Subscriptions」

Salesforce を会員の台帳にして LINE ログインを受ける手順そのものは、Salesforce も LINE も公開していません。両社の公式の説明を合わせると、Salesforce の認証プロバイダー(OpenID Connect)に LINE ログインのチャネルを登録して受け、ログインしてきた人を既存の会員と結ぶ処理は自分で書く、という組み方になります。配信は Marketing Cloud Engagement の GroupConnect が LINE に対応しています。

当社は、LINE公式アカウントの運用や、LINE とほかのシステムとの連携を支援しています。この記事は、会員の仕組みに LINE ログインと配信を組み込む Salesforce の管理者・開発者に向けて、標準の機能と自分で書く所の境目を示します。接続そのものを当社の環境で試したものではなく、公式の資料で確かめた範囲です。

店頭や電話で作った会員との照合(照合のキー・重複・取引先の持ち方)は「LINEログインとSalesforceの会員ID連携|店頭の会員とLINEを結ぶ照合キー」、データを送る向き・同意・費用は「Salesforce と LINE をつなぐ:何を・どの向きで・誰のIDで流すか」に分けています。LINE の利用者で、access.line.me のログイン画面について調べている方は LINE ヘルプセンターをご覧ください。access.line.me は LINE ログインの認可画面のドメインで、この記事は事業者の開発者向けです。

例は1つに絞ります。架空の雑貨店「デモ商会」で、店頭で会員番号 M-10234 を作ったデモ 花子さんが、会員サイトに初めて LINE でログインしてくる場面です(説明のための架空の例です)。

先に決めること:LINE のチャネルを同じプロバイダーに置く

LINE のユーザーIDは、同じ人でもプロバイダー(LINE Developers でチャネルを束ねる単位)ごとに別の値になります。同じプロバイダーなら、LINE ログインのチャネルでも Messaging API のチャネルでも同じ値です(LINE Developers「ユーザーIDを取得する」)。LINE の OpenID の設定文書でも、ユーザーIDの種類は pairwise です(OpenID Provider Configuration Document)。

一方、GroupConnect の購読者のデータビューでは、Address ID の列が「LINE UID」と説明されています(Data View: GroupConnect Contact Subscriptions)。2つを合わせると、花子さんがログインで受けたユーザーIDと配信の宛先が同じ値になるのは、LINE ログインのチャネルと、GroupConnect に登録する LINE公式アカウントの Messaging API のチャネルが、同じプロバイダーにあるときです。

この選択はやり直せません。LINE公式アカウントで Messaging API を使い始めるときに選んだプロバイダーは、後から変えることも、連携を解除することもできません。LINE ログインのチャネルと連携するなら、同じプロバイダーを選ぶよう案内されています(LINE Developers「Messaging APIを始めよう」)。同意画面で友だち追加を勧める設定(bot_prompt)も、同じプロバイダーが条件です(友だち追加オプション)。

LINE ログインのチャネルをどのプロバイダーに置くか

公式アカウントと同じプロバイダー

会員と友だちを同じIDで結べる

  • ログインで受けるユーザーID=友だちのユーザーID
  • GroupConnect の Address ID とそろう
  • bot_prompt で友だち追加を勧められる

別のプロバイダー

同じ人でも別のIDになる

  • ログインのIDと友だちのIDが一致しない
  • IDだけでは同じ人か分からない
  • bot_prompt は使えない

出典:LINE Developers「ユーザーIDを取得する」、「友だち追加オプション」、Salesforce ヘルプ「Data View: GroupConnect Contact Subscriptions」

プロバイダーを切り替えるとユーザーIDがどう変わるかは、当社のデモ「LINEログインで受け取る情報」で試せます。架空の教室・会社・データで作った当社のデモで、同意画面は LINE の実際の画面ではなく簡素なイメージです。

  1. 「LINEログインのチャネルを作ったプロバイダー」が「教室の運営会社」のまま、スマホ画面の「LINEでログイン」を押し、同意画面で「許可する」を押します。「3. ユーザーIDは、プロバイダーごとに違う」で、ログインで受け取るIDと公式アカウントの友だちのIDが同じ値だと出ます。
  2. プロバイダーを「サイトの制作会社」に切り替えて、もう一度ログインします。同じ利用者でもユーザーIDが別の値になり、友だちのIDと一致しないと出ます。bot_prompt も選べなくなります。

枠の中はスクロールできます。画面いっぱいで試すときは、別のタブで開いてください。

教室名・利用者・ユーザーIDの値は、デモの仮定です。ユーザーIDがプロバイダーごとに違い、同じプロバイダーならチャネルの種類によらず同じ、という動きは LINE の仕様です(デモの出典の欄に LINE Developers の該当ページを載せています)。

LINE ログインを受ける:認証プロバイダーに入れる値

Salesforce のヘルプの手順は6つです。登録ハンドラーを設定する、アプリケーションを OpenID プロバイダー(ここでは LINE ログインのチャネル)に登録する、OpenID Connect の認証プロバイダーを定義する、生成されたコールバックURLをプロバイダーの側に登録する、接続をテストする、ログインページに追加する、の順です(Salesforce ヘルプ「OpenID Connect を使用した認証プロバイダーの設定」)。ここで言う認証プロバイダーは Salesforce の設定の名前で、LINE Developers の「認証プロバイダー」とは別のものです。

認証プロバイダーと Experience Cloud の外部ユーザーのライセンスを使えるエディションは、Enterprise・Performance・Unlimited・Developer です(Experience Cloud User Licenses)。担当者が LINE で会話する Agentforce Service の Enhanced LINE は、対象の一覧に Performance が無く、アドオンも要ります(Supported Editions for Messaging)。Performance の会社は、ログインは受けられても、会話の受け口は別に考えることになります。製品ごとの公式の対応は「LINE×CRM・MA の公式の対応の調査」にまとめています。

[設定]の[クイック検索]で[認証プロバイダー]を開き、[新規]で[プロバイダータイプ]に[OpenID Connect]を選んで、次の値を入れます。

OpenID Connect の認証プロバイダーに入れる LINE の値
項目LINE の値確かめる所注意
[コンシューマー鍵](Consumer Key)LINE ログインのチャネルのチャネルIDLINE Developers コンソールの[チャネル基本設定]ヘルプではクライアント ID にあたる値
[コンシューマーの秘密](Consumer Secret)同じチャネルのチャネルシークレットLINE Developers コンソールの[チャネル基本設定]クライアントの秘密にあたる値
[承認エンドポイント URL](Authorize Endpoint URL)https://access.line.me/oauth2/v2.1/authorizeLINE の OpenID の設定文書クエリ文字列を足せる。bot_prompt を足すならここ(当社では試していない)
[トークンエンドポイント URL]https://api.line.me/oauth2/v2.1/tokenLINE の OpenID の設定文書—
[ユーザー情報エンドポイント URL]https://api.line.me/oauth2/v2.1/userinfoLINE ログインの API リファレンス返るのはユーザーID・表示名・画像。メールは返らない
[トークン発行者](Token Issuer)https://access.line.meLINE の OpenID の設定文書任意の項目。入れると IDトークンをこの値と UserInfo で照合する(署名は見ない)
[デフォルトの範囲](Default Scopes)openid profile(メールも要るなら email)LINE のスコープの表email は事前の申請が要る
[Proof Key for Code Exchange (PKCE) 拡張を使用]オンにできる(LINE は S256 に対応)LINE の PKCE の説明—
[登録ハンドラ種別]・[登録ハンドラ]Apex か、[ID ユーザー登録]のフローSalesforce のヘルプフローは既定のプロファイルと既定の取引先を選ぶ
[Execute Registration As (登録の実行ユーザー)]登録ハンドラーを動かすユーザーSalesforce のヘルプ「ユーザーの管理」の権限が要る

出典:LINE の OpenID の設定文書、スコープの表、ユーザー情報を取得する API、PKCE の説明、Salesforce ヘルプの手順。項目名は Salesforce の日本語版ヘルプの表記で、括弧内は英語版の表記です。

保存するとコールバックURLなどが生成されるので、LINE Developers コンソールのチャネルの[LINEログイン設定]タブで[コールバックURL]に登録します。改行で区切れば複数登録できます(LINE Developers「ウェブアプリにLINEログインを組み込む」)。認証プロバイダーの設定ページのテスト専用初期化 URL をブラウザで開けば、LINE のログインを経て Salesforce に戻るかを、ログインページに載せる前に確かめられます。サイトのログイン画面のボタンのアイコンは[アイコン URL]で指定します。

メールは IDトークンから読み、照合に使うなら確かめる

LINE の userinfo はメールを返しません(LINEログイン v2.1 APIリファレンス)。email のスコープを付けると、メールは IDトークンに入ります。Salesforce は IDトークンを Auth.UserData の idToken と idTokenJSONString に入れて登録ハンドラーに渡すので、そこから読みます(RegistrationHandler Interface、UserData Class)。申請の手順と条件は「LINEログインで取得できる情報」にあります。

ただし、OpenID Connect の認証プロバイダーは IDトークンの署名を検証しません([トークン発行者]を入れていれば、その値と UserInfo で照合するだけ)。検証するなら Auth.JWTUtil を使うよう案内されていて、その例は公開鍵のエンドポイントでの検証です(Salesforce ヘルプ、RegistrationHandler Interface)。LINE は、IDトークンに含まれる情報を使う場合は検証するよう求めていて、ウェブログインの IDトークンは HS256(鍵はチャネルシークレット)です(LINE Developers「IDトークンからプロフィール情報を取得する」)。Salesforce は IDトークンを LINE から直接受け取りますが、署名は見ていません。また、公開鍵での検証の例は、HS256 の IDトークンには当てはまりません。メールのように IDトークンの値を会員の照合に使うなら、LINE の検証用エンドポイント https://api.line.me/oauth2/v2.1/verify で確かめてから使うことをお勧めします。

登録ハンドラーで、ログインしてきた人を会員と結ぶ

そのプロバイダーで初めてログインした人には createUser が、以前にログインしたことがある人には updateUser が呼ばれます。createUser は新しいユーザーも既存のユーザーも返せますが、ユーザーと、それに付く取引先・取引先責任者を作る・更新する処理はクラスの側で書くもの、とされています(RegistrationHandler Interface)。Salesforce の側でされるのは、createUser が返した新しいユーザーの登録と、外部の ID との結び付きの ThirdPartyAccountLink への記録です。ThirdPartyAccountLink は API では参照だけで、結び付きを外すときは Auth.AuthToken.revokeAccess() を使います(ThirdPartyAccountLink)。花子さんの初めてのログインで createUser がそのまま新しい取引先責任者を作れば、店頭の M-10234 とは別の花子さんがもう1件できます。

そこで、LINE のユーザーIDを取引先責任者の外部ID(ユニーク付き)の項目に入れ、探すキーにします。外部IDの項目は、1つのオブジェクトに最大25個まで作れます(Custom Field Attributes)。項目の作り方と、取引先責任者か個人取引先かの持ち方は「LINEログインとSalesforceの会員ID連携」で扱っています。

createUser の中で、花子さんを探して結ぶ順番

1

ユーザーIDを取り出す

  • idTokenJSONString の sub を読む
  • メールも、許可されていれば同じ所から読む

2

外部IDの項目で探す

  • 見つかれば、その人のユーザーを返す

3

別のキーで探す

  • 初めてのログインでは、まだ見つからない
  • 何で探すかは照合の設計で決める

4

結ぶか、新しく作る

  • 見つかった人にユーザーIDを書き込む
  • 見つからなければ新しい会員として作る

出典:Salesforce「RegistrationHandler Interface」、LINE Developers「IDトークンからプロフィール情報を取得する」

3つ目の段が難しいのは、通常の LINE ログインで受け取れるのが、ユーザーID・表示名・プロフィール画像と、申請して許可されたメールアドレスだからです(スコープの表)。法人向けの LINE Profile+ を申請した日本の法人は、氏名・電話番号・住所なども IDトークンで受け取れます(LINE Profile+)。条件は「LINEログインで取得できる情報」にあります。通常の範囲の情報だけでは、店頭の会員番号 M-10234 と花子さんは結べません。どのキーで探し、見つからないときに会員番号を入力してもらうのかは「店頭の会員とLINEを結ぶ照合キー」で書いています。

ユーザーとほかのオブジェクトを同じトランザクションで書き込めるのは、条件つきです(RegistrationHandler Interface の注記)。そのため、createUser の中で取引先責任者へ書き込む処理は、その条件に当たらない形にしてから書きます。

会員1人ずつに割り当てるライセンスを選ぶ

Experience Cloud にログインする会員には、外部ユーザーのライセンスを割り当てます。外部ユーザーのライセンスは6種類あり(Salesforce ヘルプ「Experience Cloud User Licenses」)、会員サイトで候補になるのは次の3つです。

会員サイトで候補になる3つのライセンス

External Identity

ログインと自分の情報の更新が中心

  • 自己登録・ログイン・プロフィールの更新
  • 既定のプロファイルで取引先責任者は参照と更新
  • 1サイトで月1,000万のユニークログインまでを推奨

Customer Community

大人数の消費者向け

  • ケースやナレッジを会員に見せる
  • 個人取引先で使える
  • 1組織1億人を超える規模まで勧められる

Customer Community Plus

レポートや共有の設定まで要る

  • レポート・ダッシュボード・標準の共有
  • 外部ユーザーにロールが要る(既定の上限は5万)
  • 1組織100万人超まで(ARO を使うと1,000万人超)

出典:Salesforce ヘルプ「Experience Cloud User Licenses」、「External Identity License Details」

External Identity は、いつでもコミュニティのライセンスに切り替えられ、切り替えるとケース・契約・注文などの機能が使えます(External Identity License Details)。ログインと自分の会員情報の更新が中心なら External Identity、ケースや注文まで会員サイトで扱うならコミュニティのライセンス、というのが公式の説明から読める分け方です。コミュニティのライセンスには、会員1人ずつのメンバー単位と、毎月のログイン数を買うログイン単位があります。ログイン単位は、同じ日に何度ログインしても1つと数えます(日ごとのユニークログイン)。超過は、契約開始から12か月の合計で数えます。どちらが安いかは会員の数・ログインの頻度・契約の価格で決まるので、見積りで比べます。作るか買うかの判断は「認証は作るか買うか」で扱っています。

配信:GroupConnect の ContactKey を会員にそろえる

花子さんが LINE公式アカウントを友だち追加すると、GroupConnect の連絡先ができます。ContactKey は「システムが生成した、LINE UID に結ばれたキー」です(Data View: GroupConnect Contact Subscriptions)。そのため、Marketing Cloud の中で会員を指す ContactKey とは別の値になり、花子さんは「会員」と「LINE の友だち」の2人に分かれます。

そろえるには、LINE アドレス ID(Address ID)に対して会員の ContactKey を取り込み直します。方法は、Contact Builder の[連絡先のインポート]で[リストへのインポート](Import to a List)の定義を作るか、Contacts API を使うかです。どちらも更新(Update)だけに使います(Salesforce ヘルプ「Add Contacts to GroupConnect」)。取り込む組は、登録ハンドラーで取引先責任者に入れた LINE のユーザーIDから作れます。Marketing Cloud の ContactKey と Salesforce CRM の取引先責任者の対応のさせ方は GroupConnect のヘルプに無いので、取り込みを作る前に Marketing Cloud の構成の担当と決めておきます。

花子さんの LINE の連絡先を、会員の ContactKey にそろえる

友だち追加ContactKey はシステムが生成
取り込み直すAddress ID と会員の ContactKey の組(更新のみ)
古いキーが残る孤立した連絡先などになる
定期的に消すMobileLineOrphanContactView から削除

出典:Salesforce ヘルプ「Add Contacts to GroupConnect」、「Data View: GroupConnect Contact Subscriptions」

ヘルプの注意のうち、運用に響くのは3つです。既存の Address ID に新しい ContactKey を取り込むと、課金の対象になる連絡先の数は必ず増えます。古い ContactKey は、孤立した連絡先か、ほかのチャネルの購読に結んだ連絡先として残ります。孤立した連絡先は、データビュー MobileLineOrphanContactView を Automation Studio でデータエクステンションに取り込んで削除にかけます。ContactKey を変えたら、ContactKey で絞るオーディエンスは送る前に更新し、Journey Builder の開始のデータエクステンションも更新します。更新しないと、送信に失敗します(Add Contacts to GroupConnect)。

ブロックした人は、データビュー _MobileLineAddressContactSubscriptionView を毎日取り出し、前の日の一覧から消えた人として見つけます。このビューは、業務ルール SYSTEM_DATA_VIEWS を1にし、GroupConnect のアプリを一度開くとできます(Data View: GroupConnect Contact Subscriptions)。

Marketing Cloud Engagement が無い会社の配信は、LINE の Messaging API を自社で呼ぶか、連携ツールを使うことになります。つなぎ方ごとの作り方と費用の分かれ目は「LINEと今の顧客管理をつなぐ3つの作り方と、費用が決まる所」、Salesforce の側の書き込み方(外部IDと upsert)は「Salesforce と LINE をつなぐ」にあります。購買や行動のデータまで Data 360(旧 Data Cloud)で束ねる場合、Marketing Cloud Engagement の連絡先のデータバンドルには、LINE(GroupConnect)のデータが入っていません(Contact Mappings)。そのため、LINE のユーザーIDは取引先責任者の項目として Salesforce CRM の側から入れるか、外部のシステムから送る Ingestion API(Data 360 の Ingestion API)で入れることになります。

最初に、プロバイダーと外部IDの項目を決める

登録ハンドラーを書き始める前に、LINE ログインのチャネルと LINE公式アカウントをどのプロバイダーに置くかを決め、取引先責任者に LINE のユーザーIDを入れる外部IDの項目を作ってください。どちらも、登録ハンドラーと GroupConnect の取り込みの前提になります。

LINE のチャネルの設計から、Salesforce の項目、登録ハンドラー、GroupConnect の取り込みまでを一続きで見る支援は、LINE運用・伴走支援で承っています。

LINE Developers の各ページ、LINE の OpenID の設定文書、Salesforce のヘルプ・開発者ドキュメント(Apex は Winter ’27・API 68.0 の版)を、2026年10月13日〜14日に開いて確かめた内容です。

LINE運用・伴走支援

LINE公式アカウントの友だち獲得の設計、セグメント配信・ステップ配信・リッチメニューの構築、自動応答、CRM/MAや基幹データとの連携までを支援します。

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア:

LINE公式アカウントの資料

「LINE公式アカウント 運用改善ガイド」

LINE運用・伴走支援の内容を見る