# LINE User ID の取得

Engage Studio で LINE メッセージを配信するには、各**ペアレントセグメントのプロファイル**にプロファイル属性として **LINE User ID** が保存されている必要があります。このページでは、LINE User ID とは何か、取得方法、ペアレントセグメントへの保存方法について説明します。

## LINE User ID とは

LINE User ID は、プロバイダーごとに各 LINE ユーザーに付与される一意の識別子です。ユーザーの表示名や LINE ID（ユーザーネーム）とは異なります。

- **フォーマット**: `U[0-9a-f]{32}` — 例: `U8189cf6745fc0d808977bdb0b9f22995`
- **スコープ**: プロバイダー固有。同一の LINE ユーザーでも、異なる LINE プロバイダー（チャネル）では異なる User ID が割り当てられます。
- **安定性**: 同一プロバイダーに対するユーザー ID は変わりません。


LINE ID（ユーザーネーム）と混同しないでください
LINE User ID（`Uxxxxxxxx...` 形式）は、ユーザーの LINE ID（`@example` のような人が読める形のユーザーネーム）とは異なります。Messaging API でのメッセージ配信に使用できるのは、`U[0-9a-f]{32}` 形式の User ID のみです。

## LINE User ID の取得方法

### Webhook イベント経由

ユーザーが LINE Official Account を友だち追加したり、メッセージを送信したりすると、LINE は設定済みの Webhook URL にイベントを送信します。このイベントのペイロードに LINE User ID が含まれています。

**Webhook イベント例（follow イベント）:**


```json
{
  "events": [
    {
      "type": "follow",
      "source": {
        "type": "user",
        "userId": "U8189cf6745fc0d808977bdb0b9f22995"
      },
      "timestamp": 1625000000000
    }
  ]
}
```

この方法でユーザー ID を収集するには、Treasure Data で **Streaming Ingress Connector（LINE Messaging API Webhook）** を設定します。Webhook イベントはリアルタイムで配信され、Treasure Data データベースに保存されます。`userId` フィールドをペアレントセグメントのプロファイル属性にマッピングすることで利用できます。

設定の詳細は [LINE Messaging API Webhook セットアップガイド](/int/line-oa-streaming-import-integration) を参照してください。

### LIFF（LINE Front-end Framework）経由

[LIFF](https://developers.line.biz/ja/docs/liff/) は LINE アプリ内で動作するウェブアプリプラットフォームです。ユーザーが LIFF アプリを開いた際に、LIFF SDK を使って LINE User ID を取得できます。


```javascript
liff.init({ liffId: "YOUR_LIFF_ID" }).then(() => {
  liff.getProfile().then(profile => {
    console.log(profile.userId); // "U8189cf6745fc0d808977bdb0b9f22995"
  });
});
```

LIFF は特定のタッチポイント——たとえばロイヤルティプログラムへの登録や LINE 環境内での購入完了時——でユーザー ID を収集するのに適しています。取得した User ID は JavaScript SDK またはサーバーサイドの API コールを通じて Treasure Data に送信できます。

LIFF は LINE 内（ミニアプリ）でのみ使用してください
LIFF のログインセッションはブラウザ内のみで管理され、Webサイトの認証セッションや LINE Login とは完全に独立しています。これは次のことを意味します。

- ユーザーが LINE Login でWebサイトにログイン済みであっても、`liff.isLoggedIn()` は `false` を返します。
- 通常のWebサイトで `liff.login()` を呼び出すと、ログイン済みのユーザーであっても意図しないタイミングで LINE ログイン画面への遷移が発生します。これはWebサイトの UX として受け入れられません。
- 逆に、LIFF でログイン済みであっても、Webサイトのログイン状態にはなりません。


**推奨**: LIFF は LINE アプリ内でのみ稼働するWebアプリ（LINE ミニアプリなど）に限って使用してください。通常のWebサイトでは、以下に説明するサーバーサイドの方式を使用してください。

**通常のWebサイト向け（推奨）:** アプリケーションサーバー側から LINE User ID をページ（JavaScript 変数・Cookie・localStorage・タグマネージャーの DataLayer など）に出力し、Treasure Data JavaScript SDK タグを使って `td_ssc_id` と LINE User ID の両方をWebイベントログに含めて Treasure Data に格納します。この方式はサーバーサイドの開発が必要ですが、LIFF のセッション分離問題を回避できます。

### LINE Login 経由

[LINE Login](https://developers.line.biz/ja/docs/line-login/) を使うと、ユーザーが LINE アカウントでウェブサイトやアプリにログインできます。認証が成功すると、LINE Login API はプロファイルオブジェクトの一部として LINE User ID を返します。

この方法は、ユーザーの LINE ID を既存のシステムアカウントと紐付けたい、ウェブまたはアプリベースの登録フローに適しています。

### Get Follower IDs API 経由

**認証済みまたはプレミアムの LINE Official Account** を対象に、LINE は友だち追加済みのユーザーの User ID を一覧取得できる API エンドポイントを提供しています。

- エンドポイント: [LINE Official Account を友だち追加しているユーザーの一覧取得](https://developers.line.biz/ja/reference/messaging-api/#get-follower-ids)


既存のフォロワーを Treasure Data に一括インポートする際に活用できます。このエンドポイントはページネーション対応で、レートリミットの制約があります。

アカウントタイプの要件
Get Follower IDs API は**認証済み**または**プレミアム**の LINE Official Account のみ利用可能です。通常アカウントではこのエンドポイントを使用できません。

カスタムスクリプトの実装が必要
Treasure Data には Get Follower IDs API 向けの組み込みコネクタが存在しません。この方法を利用するには、LINE API の呼び出し・ページネーション処理・取得した User ID の Treasure Data テーブルへの書き込みを行う**カスタムスクリプト**を実装する必要があります。Treasure ワークフロー のタスクとして実行できます。実装については Treasure アカウント担当者にお問い合わせください。

## LINE User ID をペアレントセグメントに保存する

収集方法にかかわらず、Engage Studio のキャンペーンターゲティングで使用する前に、LINE User ID をペアレントセグメントのマスターテーブルにプロファイル属性として保存する必要があります。

**推奨手順:**

1. 上記いずれかの方法で LINE User ID を収集します。
2. ペアレントセグメントのマスターテーブルの専用カラム（例: `line_user_id`）に User ID を保存します。
3. Engage Studio で LINE キャンペーンを設定する際、配信ターゲットの識別子として LINE User ID を含むペアレントセグメントのプロファイル属性を選択します。


## LINE User ID の検証

保存済みの LINE User ID が有効かどうかを確認するには、[プロフィールを取得する](https://developers.line.biz/ja/reference/messaging-api/#get-profile) エンドポイントを使用します。HTTP ステータス `200` が返された場合、その User ID は有効であり、ユーザーがまだアカウントの友だちであることが確認できます。無効またはブロック済みの User ID による配信エラーは、配信ログに記録されます。

## 関連ドキュメント

- [LINE Official Account セットアップ](/ja/products/marketing-cloud/engage-studio/channels/line/line-oa-setup)
- [One-off LINE キャンペーンの作成](/ja/products/marketing-cloud/engage-studio/channels/line/line-oa-campaigns)
- [LINE キャンペーンのイベントトラッキング](/ja/products/marketing-cloud/engage-studio/channels/line/line-oa-click-tracking)
- [LINE Messaging API — ユーザー ID の取得](https://developers.line.biz/ja/docs/messaging-api/getting-user-ids/)
- [LIFF 概要](https://developers.line.biz/ja/docs/liff/)
- [LINE Login 概要](https://developers.line.biz/ja/docs/line-login/)