Kullanıcı tarafından sağlanan verileri Measurement Protocol kullanarak User-ID'yle gönderme

gtag kullanmaya benzer şekilde Google Analytics Measurement Protocol kullanmak Kullanıcı tarafından sağlanan verileri User-ID ile birlikte göndererek daha fazla bilgi edineceksiniz.

Kullanıcı tarafından sağlanan verileri Measurement Protocol isteğiyle birlikte göndermek için JSON yükündeki user_data parametresi. user_id parametresi user_data her sağlandığında mevcuttur.

Measurement Protocol, aynı normalleştirme ve karma oluşturma algoritmasını kullanır. olarak Google Ads API Geliştirilmiş Ölçüm özelliğini kullanabilirsiniz. Gizlilikle ilgili endişeler için, e-posta adresleri, telefon numaraları, adlar, soyadı, ve açık adreslere, SHA-256 algoritması yükleniyor. Karma oluşturma işlemi uygulanmış değer, onaltılık dize biçiminde (dize) nesne (ör. 88d7ecb5c5b21d7b1) girin.

Karma oluşturma sonuçlarını standartlaştırmak için bu değerler için aşağıdakileri yapmanız gerekir:

  • Baştaki ve sondaki boşlukları kaldırın.
  • Metni küçük harfe dönüştürün.
  • Telefon numaralarını E164 standardı.
  • gmail.com hücrelerinde alan adından önce gelen tüm noktaları (.) kaldırın ve googlemail.com e-posta adresi.

JSON yayın gövdesi

Anahtar Tür Açıklama
user_id dize Kullanıcının benzersiz tanımlayıcısıdır. Bu tanımlayıcı hakkında daha fazla bilgi edinmek istiyorsanız Platformlar arası analiz için User-ID'ye bakın.
user_data nesne Kullanıcıyı tanımlayan gelişmiş kullanıcı verisi alanları.
user_data.sha256_email_address[] dize dizisi Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış e-posta adresi. Şu şekilde normalleştirilmiş:
user_data.sha256_phone_number[] dize dizisi Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış telefon numarası. Şu şekilde normalleştirilmiş:
  • rakam olmayan tüm karakterleri kaldırın
  • + ön eki ekle
  • SHA256 algoritması kullanarak karma oluşturma
  • onu onaltılık dize biçimiyle kodlayın.
user_data.address[] dizi Kullanıcıyı fiziksel konumuna göre tanımlar.
user_data.address[].sha256_first_name dize Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış adı. Şu şekilde normalleştirilmiş:
  • rakamları ve sembol karakterlerini kaldırın
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırın
  • SHA256 algoritması kullanarak karma oluşturma
  • onu onaltılık dize biçimiyle kodlayın.
user_data.address[].sha256_last_name dize Kullanıcının karma oluşturma işlemi uygulanmış ve kodlanmış soyadı. Şu şekilde normalleştirilmiş:
  • rakamları ve sembol karakterlerini kaldırın
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırın
  • SHA256 algoritması kullanarak karma oluşturma
  • onu onaltılık dize biçimiyle kodlayın.
user_data.address[].sha256_street dize Karma oluşturma işlemi uygulanmış ve kodlanmış sokak ve kullanıcının numarası. Şu şekilde normalleştirilmiş:
  • sembol karakterlerini kaldırın
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırın
  • SHA256 algoritması kullanarak karma oluşturma
  • onu onaltılık dize biçimiyle kodlayın.
user_data.address[].city dize Kullanıcının adresinin bulunduğu şehir. Şu şekilde normalleştirilmiş:
  • rakamları ve sembol karakterlerini kaldırın
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırın.
user_data.address[].region dize Kullanıcının adresinin bulunduğu eyalet veya bölge. Şu şekilde normalleştirilmiş:
  • rakamları ve sembol karakterlerini kaldırın
  • küçük harf
  • baştaki ve sondaki boşlukları kaldırın.
user_data.address[].postal_code dize Kullanıcının adresinin posta kodu. Şu şekilde normalleştirilmiş:
  • . ve ~ karakterleri kaldırın
  • baştaki ve sondaki boşlukları kaldırın.
user_data.address[].country dize Kullanıcının adresinin ülke kodu. ISO 3166-1 alpha-2 standardına göre biçimlendirilmiştir.

Measurement Protocol referans belgelerini inceleyin taşıma ve yükün nasıl biçimlendirildiği hakkında daha fazla bilgi edinin.

Kullanıcı Tarafından Sağlanan Verileri Gönder

gtag yerine, Measurement Protocol, kullanıcı tarafından sağlanan hassas verilere otomatik olarak karma oluşturma işlemi uygular. Geliştiricinin, kullanıcı tarafından sağlanan hassas verilere tek yönlü güvenli bir karma oluşturma işlemi uygulamasını zorunlu kılar adlı karma oluşturma algoritması SHA256 ve kodu onaltılık dize biçimi kontrol edin.

Adlarında sha256 önekiyle başlayan tüm kullanıcı verisi alanları şöyle olmalıdır: yalnızca karma ve onaltılık kodlanmış değerlerle doldurulur.

Aşağıdaki örnek kod, gerekli şifreleme ve kodlama adımlarını gerçekleştirir:

Node.js

const { subtle } = require('crypto').webcrypto;

async function populateSensitiveUserData(value) {
  const encoder = new TextEncoder();
  // Convert a string value to UTF-8 encoded text.
  const value_utf8 = encoder.encode(value);
  // Compute the hash (digest) using the SHA-256 algorithm.
  const hash_sha256 = await subtle.digest('SHA-256', value_utf8);
  // Convert buffer to byte array.
  const hash_array = Array.from(new Uint8Array(hash_sha256));
  // Return a hex-encoded string.
  return hash_array.map(b => b.toString(16).padStart(2, "0")).join('');
};

// Test the encryption function by calling it.
async function main() {
  return await populateSensitiveUserData('<value>');
}

main()
  .then(v => console.log(v))
  .catch(err => console.error(err));

Kolaylık sağlayan bir kısayol olarak, user_data nesnesindeki tüm yinelenen alanlar (address, sha256_email_address, sha256_phone_number gibi) olabilir bir dizi yerine tekil bir değer iletir.

Aşağıdaki örnek kod, Measurement Protocol'u çağırır ve kullanıcı verilerini iletir. ve User-ID ile birlikte çalışır.

Node.js

const measurement_id = 'G-XXXXXXXXXX';
const api_secret = '<secret_value>';

// Populate mock User Data using the `populateSensitiveUserData` function defined
// above.
const yourEmailSha256Variable = await populateSensitiveUserData('test@yourdomain.com');
const yourPhoneSha256Variable  = await populateSensitiveUserData('+15555555555');
const yourFirstNameSha256Variable  = await populateSensitiveUserData('john');
const yourLastNameSha256Variable  = await populateSensitiveUserData('doe');
const yourStreetAddressSha256Variable  = await populateSensitiveUserData('123 main street');

// Populate mock unencrypted user data.
const yourCityVariable = 'san francisco';
const yourRegionVariable = 'california';
const yourPostalCodeVariable = '94000';
const yourCountryVariable = 'US';

fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: 'XXXXXXXXXX.YYYYYYYYYY',
    user_id: "XXX",
    events: [{
      name: 'purchase'
    }],
    user_data: {
      sha256_email_address: yourEmailSha256Variable,
      sha256_phone_number: yourPhoneSha256Variable,
      address: {
        sha256_first_name: yourFirstNameSha256Variable,
        sha256_last_name: yourLastNameSha256Variable,
        sha256_street: yourStreetAddressSha256Variable,
        city: yourCityVariable,
        region: yourRegionVariable,
        postal_code: yourPostalCodeVariable,
        country: yourCountryVariable
      }
    }
  })
});

Birden çok değer

Geliştiriciler isteğe bağlı olarak birden çok değer sağlayabilir (telefon ve e-posta için en fazla 3 değer) ve adres için 2) girin. Fotoğraf çekerseniz birden fazla değer sağlar. Böylece eşleşme olasılığı artar.

Node.js

const measurement_id = 'G-XXXXXXXXXX';
const api_secret = '<secret_value>';

fetch(`https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}`, {
  method: "POST",
  body: JSON.stringify({
    client_id: 'XXXXXXXXXX.YYYYYYYYYY',
    user_id: "XXX",
    events: [{
      name: 'purchase'
    }],
    user_data: {
      sha256_email_address: [yourEmailSha256Variable1, yourEmailSha256Variable2],
      sha256_phone_number: [yourPhoneSha256Variable1, yourPhoneSha256Variable2],
      address: [{
        sha256_first_name: yourFirstNameSha256Variable1,
        sha256_last_name: yourLastNameSha256Variable1,
        sha256_street: yourStreetAddressSha256Variable1,
        city: yourCityVariable1,
        region: yourRegionVariable1,
        postal_code: yourPostalCodeVariable1,
        country: yourCountryVariable1
      },{
        sha256_first_name: yourFirstNameSha256Variable2,
        sha256_last_name: yourLastNameSha256Variable2,
        sha256_street: yourStreetAddressSha256Variable2,
        city: yourCityVariable2,
        region: yourRegionVariable2,
        postal_code: yourPostalCodeVariable2,
        country: yourCountryVariable2
      }]
    }
  })
});