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
- Çok sayıda kullanıcıyı güncelleme
- Hesap hiyerarşisinden kullanıcı silme
- Tek bir kullanıcıyı güncelleme
- Tek bir kullanıcı ekleme
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:
- Hesabın tüm kullanıcı bağlantılarını alın:
- Tüm
list
accountUserLinks
.
- Tüm
- Uygun izinlere sahip her kullanıcı için güncelleme istekleri oluşturun:
- Her
accountUserLink
içinupdate
.
- Her
- 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.
- Her 300 kullanıcı için
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:
- 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: - 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 velocal
izinleri ayarlanmışsa sonra kaynakta birdelete
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:
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: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 sahiplocal
izinlerine sahipse kaynak üzerinde birupdate
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:
- Hesap, mülk ve görünüm (profil) için kimlikleri almak üzere Management API'sini veya Web Arayüzünü kullanın.
profileUserLinks
kaynağınıninsert
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.