Kullanıcı Yönetimi

Google Analytics Management API, kullanıcı izinlerinin programlı bir şekilde yönetilmesine olanak tanır. Bu, özellikle erişim kontrol listelerini (EKL'ler) sık sık güncelleyen büyük şirketler için kullanışlıdır.

Giriş

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

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

Kullanıcı İzinleri

Google Hesabı ile temsil edilen bir kullanıcıya Google Analytics hesabına, mülküne veya görünümüne (profiline) 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 gerekir.
  • COLLABORATE
  • READ_AND_ANALYZE

Her erişim düzeyiyle ilgili ek ayrıntılar için Kullanıcı İzinleri başlıklı yardım merkezi makalesine bakın.

İzin atama

API iki tür izin sunar: 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 mülkünü kullanmanız gerekir. Effective izinleri, üst kaynaklardan devralınan izinleri temsil eder.

Devralınan izinler

Bir kullanıcıya bir hesap için EDIT izni verilirse bu hesap altındaki tüm profiller ve mülkler bu izinleri devralır. Bu izinler, permissions.effective mülkü ile temsil edilir.

Kullanım alanları

Management API'deki 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

Hesaptaki herhangi bir mülk veya görünümde (profil) izinleri olan tüm kullanıcılar da dahil olmak üzere, bir hesabın tüm kullanıcılarını listelemek için accountUserLinks kaynağının list yöntemini çalıştırın.

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

Çok sayıda kullanıcının izinlerini güncellemek üzere toplu işlemi kullanmanız önemle tavsiye edilir. Bu, kotadan tasarruf etmekle kalmayacak, aynı zamanda çok daha etkili olacaktır. Tüm ayrıntılar için aşağıdaki toplu işlem bölümüne bakın. Hesap için bunu gerçekleştirmek üzere izlenmesi gereken adımlar şunlardır:

  1. Hesabın tüm kullanıcı bağlantılarını alma:
    • list accountUserLinks.
  2. Uygun izinlere sahip her kullanıcı için güncelleme istekleri oluşturun:
    • Her accountUserLink için update.
  3. Yukarıdaki güncelleme isteklerini içeren her 300 kullanıcı için tek bir toplu istek oluşturun:
    • her 300 kullanıcı için batch çağrısı yapılsın.

Hesap hiyerarşisinden kullanıcı silme

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

  1. Her öğe 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:
    • list accountUserLinks.
    • webpropertyId parametresini ~all olarak ayarlayarak webpropertyUserLinks adlı öğenin tamamı için list.
    • webpropertyId ve profileId parametrelerini ~all olarak ayarlayarak tüm profileUserLinks için list.
  2. Yerel izinlere sahip kullanıcıları bulup silin. 1. adımdaki 3 listeleme işleminden alınan her yanıt için her bir entityUserLink işlemini yineleyin:
    • userRef özellikleri kullanıcıyla eşleşiyorsa ve local izinleri ayarlanmışsa daha 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 ile ilgili ayrıntılar için API Referansı'na bakın.

Tek bir kullanıcıyı güncelleme

Kullanıcı izinleri, Management API kullanılarak da güncellenebilir. Örneğin, görünüm (profil) adını veya kimliğini bilmediğiniz varsayılarak bir kullanıcının READ_AND_ANALYZE izin düzeyini EDIT olarak değiştirmek için aşağıdaki adımları uygulayın:

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

    • list accountUserLinks.
    • webpropertyId parametresini ~all olarak ayarlayarak webpropertyUserLinks adlı öğenin tamamı için list.
    • webpropertyId ve profileId parametrelerini ~all olarak ayarlayarak tüm profileUserLinks için list.
  2. Yerel izinlere sahip kullanıcıları bulun ve güncelleyin. 1. adımdaki 3 listeleme işleminden alınan her yanıt için her bir entityUserLink işlemini yineleyin:

    • userRef özellikleri kullanıcıyla eşleşiyorsa ve kullanıcının READ_AND_ANALYZE erişimi olan local izinleri varsa daha sonra kaynakta bir update 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 update yöntemi ile ilgili ayrıntılar için API Referansı'na bakın.

Tek bir kullanıcı ekleme

Hesap hiyerarşisine (ör. bir görünüme (profil)) kullanıcı eklemek için aşağıdaki adımların uygulanması gerekir:

  1. Hesap, mülk ve görünüm (profil) kimliklerini almak için Management API'yi 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 (silme, ekleme, güncelleme) istekleri için toplu işlem yaparken performans artışları ve kota teşvikleri sunulur.

  • Toplu kullanıcı izni istekleri, arka uç optimizasyonlarından yararlanabilir ve önemli performans artışları sağlayabilir.
  • Her 30 toplu kullanıcı izni API isteği yalnızca bir tek yazma işlemi olarak sayılır.
  • Tek bir toplu istekte en fazla 300 kullanıcı izni API isteği gönderilebilir. Böylece kullanıcı başına sınır daha yüksek bir QPS elde edilebilir.

Bu performans kazançları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ı içeren toplu kullanıcı izni istekleri, şu mesajla birlikte bir hataya neden olur: All batched requests must be under the same account.

Hata İşleme

Toplu bir istekteki tüm izin çağrıları tek bir işlem olarak kabul edilir. Bu, mutasyonlardan herhangi birinde hata olması durumunda, hiçbir değişikliğin yapılmadığı anlamına gelir. Bunları tek bir telefon araması olarak değerlendirmemizin nedenleri şunlardır:

  • Tek bir kullanıcının izinlerini ayarlamak için birden çok düzenleme yapılması gerekebilir. Düzenlemelerden biri geçersizse, grubun bir kısmının uygulanması, kullanıcı izinlerinin istenmeyen bir duruma düşmesine neden olabilir.
  • Düzenlemeleri tek bir işlem olarak ele alarak trafiği optimize edebilir ve çağrı için gereken kotayı azaltabiliriz.

Toplu işleme örneği: Python

Aşağıda, bir kullanıcı listesini bir görünüm (profil) grubuna eklemek için toplu isteklerin nasıl toplu olarak işleneceğine dair Python'da basit bir örnek verilmiştir. Örnek, yetkili kullanıcının hesaplarında döngü oluşturur ve her hesap için tek bir toplu istek oluşturur. Her bir toplu istek içinde belirli bir kullanıcıya ilişkin 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

Ardından, çeşitli veri kaynaklarını yapılandırmak için Google Analytics Management API'yi nasıl kullanacağınızı inceleyeceğiz.