Kullanıcı Yönetimi

Google Analytics Management API, kullanıcı izinlerinin programatik olarak yönetilmesine olanak tanır. Bu, özellikle erişim kontrol listelerinde (EKL'ler) sık sık güncelleme yapan büyük şirketler için faydalıdır.

Giriş

Hesaba, mülke veya görünüme kimlerin erişebileceğini kontrol etmek için kullanılan üç ana kaynak (profil):

Ayrıca, kullanıcı izinleri yazma işlemleri için özel gruplandırma desteği de vardır.

Kullanıcı İzinleri

Google Hesabı tarafından temsil edilen bir kullanıcıya Google Analytics hesabı, mülkü veya görünümü (profili) için aşağıdaki erişim düzeyleri verilebilir:

  • MANAGE_USERS: Kullanıcı izinleri API'lerine yazma isteği göndermek için gereklidir.
  • EDIT - Veri yönetimi kaynaklarını düzenlemek için gereklidir.
  • COLLABORATE
  • READ_AND_ANALYZE

Her erişim düzeyiyle ilgili ek bilgi için Kullanıcı İzinleri başlıklı yardım merkezi makalesini inceleyin.

İzin atama

API iki tür izin gösterir: local ve effective. Yerel izinler; belirtilen hesap, mülk veya görünüm (profil) için geçerlidir. API ile izin atarken permissions.local özelliğini kullanmanız gerekir. Effective izinleri, üst kaynaklardan devralınan izinleri temsil eder.

Devralınan izinler

Kullanıcıya bir hesapta EDIT izni verilirse söz konusu hesabın altındaki tüm profiller ve mülkler bu izinleri devralır. Bu, permissions.effective mülkü ile temsil edilir.

Kullanım alanları

Management API'sindeki kullanıcı izinleri aşağıdaki kullanım alanlarını çözmek için kullanılabilir:

Bir hesabın tüm kullanıcılarını listeleme

Hesapta herhangi bir mülk veya görünüm (profil) iznine sahip olan tüm kullanıcılar dahil, bir hesabın tüm kullanıcılarını listelemek için accountUserLinks kaynağının list yöntemini yürütün.

Çok sayıda kullanıcıyı güncelleyin

Çok sayıda kullanıcının izinlerini güncellemek için toplu olarak kullanmanız önemle tavsiye edilir. Bu, yalnızca kotayı kaydetmenin yanı sıra daha etkili olacaktır. Tüm ayrıntılar için aşağıdaki toplu işlem bölümüne bakın. Bunu bir hesap için gerçekleştirmek için gereken adımlar şunlardır:

  1. Hesabın tüm kullanıcı bağlantılarını alın:
    • Tüm list accountUserLinks.
  2. Uygun izinlere sahip her kullanıcı için güncelleme istekleri oluşturun:
    • Her accountUserLink için update.
  3. Her 300 kullanıcı için yukarıdaki güncelleme isteklerini içeren tek bir toplu istek oluşturun:
    • Her 300 kullanıcı için batch numaralı telefonu arayın.

Hesap hiyerarşisinden kullanıcı silme

Hesap hiyerarşisinde bir kullanıcının tüm geçtiği yerleri (ör. hesap, mülkler ve görünümler (profiller)) kaldırmak için. Bunu gerçekleştirmek için gereken adımlar şunlardır:

  1. Her varlık düzeyi için tüm kullanıcı bağlantılarını alın. Hesap için 3 list isteği yürütün:
    • Tüm list accountUserLinks.
    • webpropertyId parametresini ~all olarak ayarlayarak list öğesinin tamamını webpropertyUserLinks.
    • webpropertyId ve profileId parametrelerini ~all olarak ayarlayarak list tümünü profileUserLinks.
  2. Yerel izinlere sahip kullanıcıları bulup silme. 1. adımdaki 3 liste işleminden alınan her bir yanıt için her bir entityUserLink işlemini tekrarlayın:
    • userRef özellikleri kullanıcıyla eşleşiyorsa ve local izinleri ayarlanmışsa sonra kaynakta bir delete yürütün

Hesap Kullanıcı Bağlantıları, Web Mülkü Kullanıcı Bağlantıları ve Görünüm (Profil) Kullanıcı Bağlantıları kaynaklarının delete yöntemi hakkında ayrıntılı bilgi için API Referansı'na bakın.

Tek bir kullanıcıyı güncelleme

Kullanıcı izinleri Management API'si kullanılarak da güncellenebilir. Örneğin, görünüm (profil) adını veya kimliğini bilmediğiniz sürece READ_AND_ANALYZE olan izin düzeyini EDIT olarak değiştirme adımları şunlardır:

  1. Her varlık düzeyi için tüm kullanıcı bağlantılarını alın Hesap için 3 list isteği yürütün:

    • Tüm list accountUserLinks.
    • webpropertyId parametresini ~all olarak ayarlayarak list öğesinin tamamını webpropertyUserLinks.
    • webpropertyId ve profileId parametrelerini ~all olarak ayarlayarak list tümünü profileUserLinks.
  2. Yerel izinlere sahip kullanıcıları bulup güncelleme. 1. adımdaki 3 liste işleminden alınan her bir yanıt için her bir entityUserLink işlemini tekrarlayın:

    • userRef özellikleri kullanıcıyla eşleşiyor ve kullanıcı READ_AND_ANALYZE erişimine sahip local izinlerine sahipse kaynak üzerinde bir update işlemi gerçekleştirin.

Hesap Kullanıcı Bağlantıları, Web Mülkü Kullanıcı Bağlantıları ve Görünüm (Profil) Kullanıcı Bağlantıları kaynaklarının update yöntemi hakkında ayrıntılı bilgi için API Referansı'na bakın.

Tek bir kullanıcı ekleme

Hesap hiyerarşisine (örneğin, bir görünüm (profil)) kullanıcı eklemek için aşağıdaki adımları uygulamanız gerekir:

  1. Hesap, mülk ve görünüm (profil) için kimlikleri almak üzere Management API'sini veya Web Arayüzünü kullanın.
  2. profileUserLinks kaynağının insert yöntemini çalıştırarak kullanıcıyı ekleyin.

Gruplama

API yazma isteği (silme, ekleme, güncelleme) istekleri topluyken performans kazanımları ve kota teşvikleri olur.

  • Toplu kullanıcı izinleri istekleri arka uç optimizasyonlarından yararlanabilir ve önemli performans artışları görebilir.
  • Her 30 toplu kullanıcı izni API isteği yalnızca tek bir yazma işlemi olarak sayılır.
  • Tek bir toplu istekte 300'e kadar kullanıcı izni API isteği gönderilebilir. Böylece daha yüksek kullanıcı başına sınır QPS değeri sağlanır.

Bu performans kazanımlarından en iyi şekilde yararlanmak için yapmanız gereken bazı işlemler vardır.

  • API isteğinizi kullanıcıya göre gruplandırın.
  • Yalnızca bir hesap için toplu istekler. Birden fazla Google Analytics hesabına sahip olan toplu kullanıcı izni istekleri şu mesajla ilgili bir hataya neden olur: All batched requests must be under the same account.

Hata İşleme

Bir toplu istekteki tüm izin çağrıları tek bir işlem olarak değerlendirilir. Diğer bir deyişle, hatalı dönüştürmelerden herhangi biri hatalıysa herhangi bir değişiklik yapılmaz. Bunları tek bir arama olarak ele almamızın nedenleri şunlardır:

  • Tek bir kullanıcının izinlerini düzenlemek için birden çok düzenleme yapılması gerekebilir. Düzenlemelerden birinin biçimi hatalıysa grubun bir kısmını uygulamak, kullanıcının izinlerinin istenmeyen bir duruma düşmesine neden olabilir.
  • Düzenlemeleri tek bir işlem olarak ele alarak trafiği optimize eder ve görüşme için gereken kotayı düşürebiliriz.

Gruplama örneği - Python

Aşağıda, bir grup görüntülemeye (profil) eklemek için kullanıcı isteklerinin toplu olarak gruplandırılmasına dair basit bir Python örneği verilmiştir. Örnekte, yetkili kullanıcının hesapları arasında geçiş yapılır ve her hesap için tek bir toplu istek oluşturulur. Her toplu istekte, belirli bir kullanıcı için tüm değişiklikleri gruplandırır.


"""A simple example of Google Analytics batched user permissions."""
import json
from googleapiclient.errors import HttpError
from googleapiclient.http import BatchHttpRequest

def call_back(request_id, response, exception):
  """Handle batched request responses."""
  print request_id
  if exception is not None:
    if isinstance(exception, HttpError):
      message = json.loads(exception.content)['error']['message']
      print ('Request %s returned API error : %s : %s ' %
             (request_id, exception.resp.status, message))
  else:
    print response


def add_users(users, permissions):
  """Adds users to every view (profile) with the given permissions.

  Args:
    users: A list of user email addresses.
    permissions: A list of user permissions.
  Note: this code assumes you have MANAGE_USERS level permissions
  to each profile and an authorized Google Analytics service object.
  """

  # Get the a full set of account summaries.
  account_summaries = analytics.management().accountSummaries().list().execute()

  # Loop through each account.
  for account in account_summaries.get('items', []):
    account_id = account.get('id')

    # Loop through each user.
    for user in users:
      # Create the BatchHttpRequest object.
      batch = BatchHttpRequest(callback=call_back)

      # Loop through each property.
      for property_summary in account.get('webProperties', []):
        property_id = property_summary.get('id')

        # Loop through each view (profile).
        for view in property_summary.get('profiles', []):
          view_id = view.get('id')

          # Construct the Profile User Link.
          link = analytics.management().profileUserLinks().insert(
              accountId=account_id,
              webPropertyId=property_id,
              profileId=view_id,
              body={
                  'permissions': {
                      'local': permissions
                  },
                  'userRef': {
                      'email': user
                  }
              }
          )
          batch.add(link)

      # Execute the batch request for each user.
      batch.execute()

if __name__ == '__main__':

  # Construct a list of users.
  emails = ['ona@gmail.com', 'emi@gmail.com', 'sue@gmail.com', 'liz@gmail.com']

  # call the add_users function with the list of desired permissions.
  add_users(emails, ['READ_AND_ANALYZE'])

Sonraki adımlar

Bir sonraki bölümde, çeşitli veri kaynaklarını yapılandırmak için Google Analytics Management API'yi nasıl kullanacağınızı inceleyeceğiz.