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
- Ç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
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:
- Hesabın tüm kullanıcı bağlantılarını alma:
list
accountUserLinks
.
- Uygun izinlere sahip her kullanıcı için güncelleme istekleri oluşturun:
- Her
accountUserLink
içinupdate
.
- Her
- 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.
- her 300 kullanıcı için
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:
- 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: - 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 velocal
izinleri ayarlanmışsa daha 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 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:
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: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ınREAD_AND_ANALYZE
erişimi olanlocal
izinleri varsa daha sonra kaynakta birupdate
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:
- Hesap, mülk ve görünüm (profil) kimliklerini almak için Management API'yi veya web arayüzünü kullanın.
profileUserLinks
kaynağınıninsert
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.