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
- Ç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ü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:
- Hesap için tüm kullanıcı bağlantılarını alma:
list
tümü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
.
- Her 300 kullanıcı için
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:
- 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 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 velocal
izinleri ayarlanmışsa bu durumda kaynakta birdelete
ç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:
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 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ınREAD_AND_ANALYZE
erişimi olanlocal
izinleri varsa ve kaynak üzerinde birupdate
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:
- 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 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.