Salesforceを会員・顧客基盤にする|LINEログインから配信まで、標準と自作の境目
LINEログインはSalesforceの認証プロバイダーで受け、会員と結ぶ登録ハンドラーは自分で書きます。配信はMarketing Cloud EngagementのGroupConnectでContactKeyをそろえます。
目次 クリックで開く
この記事の要点
- Salesforce に LINE 専用のログイン設定はありません。両社の公式の説明を合わせると、認証プロバイダーの「OpenID Connect」に LINE ログインのチャネルを登録する形になります(Apex のカスタム認証プロバイダーで作る道もあります)。
- ログインしてきた人を既存の会員と結ぶ処理は、登録ハンドラーに自分で書きます。OpenID Connect の認証プロバイダーは IDトークンの署名を検証しないので、IDトークンの値を照合に使うなら自分で確かめます。
- 配信は Marketing Cloud Engagement の GroupConnect です。友だちの ContactKey はシステムが振るので、会員の ContactKey に取り込み直します。
LINE ログインから配信まで、同じ人をどこで結ぶか
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 の実際の画面ではなく簡素なイメージです。
- 「LINEログインのチャネルを作ったプロバイダー」が「教室の運営会社」のまま、スマホ画面の「LINEでログイン」を押し、同意画面で「許可する」を押します。「3. ユーザーIDは、プロバイダーごとに違う」で、ログインで受け取るIDと公式アカウントの友だちのIDが同じ値だと出ます。
- プロバイダーを「サイトの制作会社」に切り替えて、もう一度ログインします。同じ利用者でもユーザー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]を選んで、次の値を入れます。
| 項目 | LINE の値 | 確かめる所 | 注意 |
|---|---|---|---|
| [コンシューマー鍵](Consumer Key) | LINE ログインのチャネルのチャネルID | LINE Developers コンソールの[チャネル基本設定] | ヘルプではクライアント ID にあたる値 |
| [コンシューマーの秘密](Consumer Secret) | 同じチャネルのチャネルシークレット | LINE Developers コンソールの[チャネル基本設定] | クライアントの秘密にあたる値 |
| [承認エンドポイント URL](Authorize Endpoint URL) | https://access.line.me/oauth2/v2.1/authorize | LINE の OpenID の設定文書 | クエリ文字列を足せる。bot_prompt を足すならここ(当社では試していない) |
| [トークンエンドポイント URL] | https://api.line.me/oauth2/v2.1/token | LINE の OpenID の設定文書 | — |
| [ユーザー情報エンドポイント URL] | https://api.line.me/oauth2/v2.1/userinfo | LINE ログインの API リファレンス | 返るのはユーザーID・表示名・画像。メールは返らない |
| [トークン発行者](Token Issuer) | https://access.line.me | LINE の 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 にそろえる
出典: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や基幹データとの連携までを支援します。
