Client-Side Integration Guide for JavaScript
このガイドは、ウェブサイト上で JavaScript による変更のみを使用して、最小限の工数で UID2 とインテグレーションし、UID2 Token (Advertising Token) を生成したいすべての参加者を対象としています。
このアプローチは、以下の参加者タイプで使用されます:
- パブリッシャー: 特に、UID2 Token をビッドストリームに送信したいパブリッシャー向けのワークフローです。
- 広告主およびデータプロバイダー: また、広告主やデータプロバイダーは、トラッキングピクセルに UID2 Token を追加するためにこれを使用します (詳細は Tokenized Sharing in Pixels を参照)。
このガイドは、Private Operator を利用したいパブリッシャーや、Server-Side でトークンを生成したいパブリッシャーには適用されません。これらのパブリッシャーは、Client-Server Integration Guide for JavaScript を参照してください。
UID2 は JavaScript 用の SDK (詳細は SDK for JavaScript Reference Guide を参照) を提供しており、以下の機能があります。
- UID2 Token の生成
- UID2 Token の自動リフレッシュ
- UID2 Token のブラウザへの自動保存
実装には、以下のステップを完了する必要があります:
- Complete UID2 account setup and configure account
- Add SDK for JavaScript to your site
- Configure the SDK for JavaScript
- Check that the token was successfully generated
SDK for JavaScript Version
Client-Side でのトークン生成は、SDK バージョン 3.4.5 以降でサポートされています。
SDK の URL は以下の通りです:
以下のコードサンプルにおいて、プレースホルダー {{ UID2_JS_SDK_URL }} はこの URL を指します。
SDK のデバッグビルドを使用したい場合は、代わりに以下の URL を使用してください:
Integrating with Single Sign-On (SSO)
SSO ログインを提供するために1つ以上の SSO プロバイダーとインテグレーションしている場合、SSO プロバイダーからログインユーザーのメールアドレスを取得して UID2 Token を生成できる可能性があります。
詳細は、Publisher Integration with SSO Providers を参照してください。
Preparing DII for Processing
UID2 に変換する入力データが許容可能な形式であることは非常に重要です。そうでない場合、期待される結果は得られません。たとえば、Phone Number Normalization で説 明されているように、電話番号には国コードを含めるように正規化する必要があります。
詳細は、Preparing Emails and Phone Numbers for Processing を参照してください。
フルトークン生成パイプラインをエンドツーエンドで検証し、正規化・ハッシュ化・エンコードされた値から生成されたトークンが正確であることを確認するためには、[UID2 Token Validator](../ref-info/ref-token-validator.md)を使用してください。
Complete UID2 Account Setup and Configure Account
UID2 とインテグレーションするには、UID2 アカウントが必要です。まだアカウントを作成していない場合は、まず Account Setup ページの手順に従ってください。
アカウントの初期設定が完了すると、UID2 Portal へのアクセス手順とリンクが送られます。ポータルでは本番環境用の credentials (認証情報) を作成したり、必要な追加値を設定したりできます。詳細は Getting Started with the UID2 Portal を参照してください。
Client-Side インテグレーションを行うには、UID2 Portal の Client-Side Integration ページで以下の値を設定する必要があります:
-
Subscription ID と Public Key: Adding and Managing Key Pairs を参照してください。
-
この SDK を使用するサイトの ドメイン名 のリスト: Adding and Managing Root-Level Domains を参照してください。
-
モバイルアプリ ID (該当する場合): Adding and Managing Mobile App IDs を参照してください。
アカウント設定に必要なのはルートレベルのドメインのみです。例えば、example.com、shop.example.com、example.org で JavaScript 用 SDK を使用する場合、ドメイン名 example.com と example.org のみを指定する必要があります。
Add SDK for JavaScript to Your Site
以下のコードスニペットは、ウェブサイトに追加する必要があるコードの概要です。また、SDK がトリガーする可能性のあるさまざまなイベントも示しています。
より詳細なコードスニペットについては、Example Integration Code and When to Pass DII to the UID2 SDK を参照してください。
UID2_JS_SDK_URL の値については、SDK for JavaScript Version を参照してください。
<script async src="{{ UID2_JS_SDK_URL }}"></script>
<script>
// When the UID2 SDK is executed, it looks for these callbacks and invokes them.
window.__uid2 = window.__uid2 || {};
window.__uid2.callbacks = window.__uid2.callbacks || [];
window.__uid2.callbacks.push((eventType, payload) => {
switch (eventType) {
case "SdkLoaded":
// The SdkLoaded event occurs just once.
__uid2.init({});
break;
case "InitCompleted":
// The InitCompleted event occurs just once.
//
// If there is a valid UID2 token, it is in payload.identity.
break;
case "IdentityUpdated":
// The IdentityUpdated event happens when a UID2 token is generated or refreshed.
// payload.identity contains the resulting latest identity.
break;
}
});
</script>
SDK の詳細については、SDK for JavaScript Reference Guide を参照してください。
Using the UID2 Integration Environment
デフォルトでは、SDK は UID2 本番環境 https://prod.uidapi.com で動作するように設定されています。代わりに UID2 インテグレーション環境を使用したい場合 (認証情報については Getting Your Credentials を参照)、init の呼び出しで以下の URL を指定してください:
__uid2.init({
baseUrl: "https://operator-integ.uidapi.com",
});
UID2 インテグレーション環境のトークンは、ビッドストリーム に渡すには無効です。インテグレーション環境では、異なる Subscription ID と Public Key の値を使用します。各環境の認証情報の取得については、Getting Your Credentials を参照してください。
Optional: Specifying the API Base URL to Reduce Latency
デフォルトでは、この SDK は米国の UID2 本番環境サーバーを呼び出します。
ユースケースに最適な URL の選択方法や有効なベース URL の完全なリストについては、Environments を参照してください。
デフォルトではない UID2 サーバーを指定するには、init 呼び出しで変更できます:
__uid2.init({
baseUrl: "https://global.prod.uidapi.com",
});
Configure the SDK for JavaScript
UID2 は、Client-Side トークン生成機能を使用するために必要な以下の値をパブリッシャーに提供します:
- Subscription ID
- Public Key
パブリッシャーインテグレーション環境用に 1 セット、本番環境用に別のセットを用意します。
SDK を設定するには、アカウント設定時に受け取った Public Key と Subscription ID、およびユーザーのハッシュ化済みまたは未ハッシュの DII (メールアドレスまたは電話番号) を含むオブジェクトを指定して、以下のメソッドのいずれかを呼び出します:
__uid2.setIdentityFromEmail__uid2.setIdentityFromEmailHash__uid2.setIdentityFromPhone__uid2.setIdentityFromPhoneHash
__uid2.setIdentityFromEmailHash または __uid2.setIdentityFromPhoneHash の場合、emailHash または PhoneHash 引数は Base64 エンコードされた値である必要があります。詳細は Email Address Hash Encoding および Phone Number Hash Encoding を参照してください。
以下のセクションでは、各シナリオのコーディング例を示します。
設定が完了すると、UID2 SDK は以下を処理します:
- ユーザーの UID2 Token を生成します。
- トークンをユーザーのブラウザに保存します。
- サイトがユーザーのブラウザで開かれている間、必要に応じてトークンを自動的にリ フレッシュします。
ユーザーの DII は、ハッシュ化済みまたは未ハッシュの状態で UID2 SDK に渡すことができます。未ハッシュの DII を渡した場合、UID2 SDK がハッシュ化を行います。すでにハッシュ化された DII を SDK に渡したい場合は、ハッシュ化の前に正規化を行う必要があります。詳細は Normalization and Encoding を参照してください。
Format Examples for DII
SDK は、ハッシュ化された DII を UID2 Service に送信する前に暗号化します。
特定のユーザーに対して、4 つの DII フォーマットのいずれかを使用して SDK を設定できます。DII フォーマットはユーザーによって異なる場合がありますが、ユーザーごとに送信できる値は 1 つだけです。
以下の例は、UID2 SDK を設定するさまざまな方法を示し、SDK に渡す DII の要件をリストアップしています:
- メールアドレス、未ハッシュ
- メールアドレス、正規化およびハッシュ化済み
- 電話番号、未ハッシュ
- 電話番号、正規化およびハッシュ化済み
SDK が複数回設定された場合、最新の設定値が使用されます。
JavaScript でメールアドレスと電話番号のハッシュを生成する方法の例については、Example Code: Hashing and Base-64 Encoding を参照してください。
- Email, Unhashed
- Email, Normalized and Hashed
- Phone Number, Unhashed
- Phone Number, Normalized and Hashed
次の例は、メールアドレスを使用して UID2 SDK を設定します。
await __uid2.setIdentityFromEmail(
"test@example.com",
{
subscriptionId: subscriptionId,
serverPublicKey: publicKey,
}
);
このシナリオでは:
- パブリッシャーによる正規化やハッシュ化は必要ありません。
- UID2 SDK は、暗号化されたハッシュを UID2 Service に送信する前に、メールアドレスを正規化してハッシュ化します。
次の例は、ハッシュ化されたメールアドレスを使用して UID2 SDK を設定します。
await __uid2.setIdentityFromEmailHash(
'lz3+Rj7IV4X1+Vr1ujkG7tstkxwk5pgkqJ6mXbpOgTs=',
{
subscriptionId: subscriptionId,
serverPublicKey: publicKey,
}
);
このシナリオでは: