Kullanıcı Yönetimi

Google Analytics Management API, kullanıcı izinlerinin programlı yönetimine olanak tanır. Bu, erişim kontrol listelerinde (EKL'ler) sık sık güncelleme yapılan büyük şirketler için özellikle yararlıdır.

Giriş

Bir hesaba, mülke veya görünüme (profile) 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şleme desteği de sunulur.

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 düzeylerde erişim verilebilir:

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

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

İ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 söz konusu 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ülkte veya görünümde (profilde) 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 için toplu işlemi kullanmanız önemle tavsiye edilir. Bu yalnızca kotadan tasarruf etmekle kalmaz, aynı zamanda çok daha fazla performans gösterir. Tüm ayrıntılar için toplu işleme bölümüne bakın. Hesap için bu işlem için gerekli adımlar şunlardır:

  1. Hesap için tüm kullanıcı bağlantılarını alma:
    • list tümü 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.

Hesap hiyerarşisinden kullanıcı silme

Bir kullanıcının mevcut tüm oluşumlarını hesap hiyerarşisinden kaldırmak için (ör. hesap, mülkler ve görünümler (profiller)). Bu işlem için şu adımlar izlenmelidir:

  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:
    • list tümü accountUserLinks.
    • webpropertyId parametresini ~all değerine ayarlayarak tüm webpropertyUserLinks list.
    • webpropertyId ve profileId parametrelerini ~all olarak ayarlayarak list tüm profileUserLinks.
  2. Yerel izinlere sahip kullanıcıları bulup silin. 1. adımdaki 3 liste 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 bu durumda kaynakta bir delete çalıştırır

Hesap Kullanıcısı Bağlantıları, Web Mülkü Kullanıcı Bağlantıları ve Görünüm (Profil) Kullanıcı Bağlantıları kaynaklarına ait 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 olan 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 tümü accountUserLinks.
    • webpropertyId parametresini ~all değerine ayarlayarak tüm webpropertyUserLinks list.
    • webpropertyId ve profileId parametrelerini ~all olarak ayarlayarak list tüm profileUserLinks.
  2. Yerel izinleri olan kullanıcıları bulma ve güncelleme 1. adımdaki 3 liste 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 ve kaynak üzerinde bir update yürütün.

Hesap Kullanıcısı Bağlantıları, Web Mülkü Kullanıcı Bağlantıları ve Görünüm (Profil) Kullanıcı Bağlantıları kaynaklarına ait 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 yürüterek kullanıcıyı ekleyin.

Gruplama

API yazma (silme, ekleme, güncelleme) istekleri için toplu işlem yaparken performans artışı 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. Bu da kullanıcı başına sınır QPS'nin daha yüksek olmasını sağlar.

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 sonuçlanır: 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 arama olarak ele almamızın nedenleri şunlardır:

  • Tek bir kullanıcının izinlerini ayarlamak için birden çok düzenleme yapılması gerekebilir. Düzenlemelerden biri bozuksa 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ı listesi (profil) grubuna kullanıcı listesi eklemek için toplu isteklerin nasıl yapılacağını gösteren Python'da basit bir örnek verilmiştir. Örnek, yetkili kullanıcının hesapları arasında döngü oluşturur ve her hesap için tek bir toplu istek oluşturur. Her toplu istekte, 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

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.