Google Analytics Management API memungkinkan pengelolaan izin pengguna secara terprogram. Hal ini sangat berguna bagi perusahaan besar yang melakukan pembaruan daftar kontrol akses (ACL) secara rutin.
Pengantar
Ada tiga resource utama yang digunakan untuk mengontrol siapa yang dapat mengakses akun, properti, atau tampilan (profil):
Ada juga dukungan pengelompokan khusus untuk operasi tulis izin pengguna.
Izin Pengguna
Pengguna, yang diwakili oleh Akun Google, dapat diberi tingkat akses berikut ke akun, properti, atau tampilan (profil Google Analytics):
MANAGE_USERS
- Diperlukan untuk membuat permintaan tulis ke API izin pengguna.EDIT
- Diperlukan untuk mengedit resource pengelolaan data.COLLABORATE
READ_AND_ANALYZE
Untuk detail tambahan tentang setiap tingkat akses, lihat artikel pusat bantuan Izin Pengguna.
Menetapkan izin
API ini mengekspos dua jenis izin: local
dan effective
. Izin lokal berlaku untuk akun, properti, atau tampilan (profil) tertentu. Saat menetapkan izin dengan API, Anda harus menggunakan properti permissions.local
. Izin Effective
mewakili izin yang diwarisi dari resource induk.
Izin yang diwarisi
Jika pengguna diberi izin EDIT
pada sebuah akun, semua profil dan properti pada akun tersebut akan mewarisi izin ini; ini akan diwakili oleh properti permissions.effective.
Kasus penggunaan
Izin pengguna di Management API dapat digunakan untuk menyelesaikan kasus penggunaan berikut:
- Mencantumkan semua pengguna untuk akun
- Memperbarui sejumlah besar pengguna
- Menghapus pengguna dari hierarki akun
- Memperbarui satu pengguna
- Menambahkan satu pengguna
Menampilkan daftar semua pengguna untuk akun
Untuk menampilkan daftar semua pengguna untuk sebuah akun, termasuk semua pengguna yang memiliki izin di properti atau tampilan (profil) apa pun dalam akun, jalankan metode list
dari resource accountUserLinks.
Memperbarui sejumlah besar pengguna
Untuk memperbarui izin bagi sejumlah besar pengguna, sangat disarankan agar Anda menggunakan pengelompokan; tindakan ini tidak hanya akan menghemat kuota, tetapi juga akan menghasilkan performa yang jauh lebih baik -- lihat bagian pengelompokan di bawah untuk detail selengkapnya. Langkah-langkah yang diperlukan untuk melakukannya untuk akun adalah:
- Dapatkan semua link pengguna untuk akun:
list
seluruhaccountUserLinks
.
- Buat permintaan update untuk setiap pengguna dengan izin yang sesuai:
update
untuk setiapaccountUserLink
.
- Buat satu permintaan batch untuk setiap 300 pengguna yang berisi permintaan update di atas:
- panggil
batch
untuk setiap 300 pengguna.
- panggil
Menghapus pengguna dari hierarki akun
Untuk menghapus semua kemunculan pengguna dari hierarki akun (yaitu akun, properti, dan tampilan (profil)). Langkah-langkah yang diperlukan untuk melakukannya adalah:
- Dapatkan semua link pengguna untuk setiap level entitas. Jalankan 3 permintaan
list
untuk akun: - Temukan dan hapus pengguna dengan izin lokal. Untuk setiap respons yang diterima dari 3 operasi daftar di langkah 1, lakukan iterasi melalui setiap
entityUserLink
:- jika properti
userRef
cocok dengan pengguna dan jika izinlocal
ditetapkan, maka jalankandelete
pada resource
- jika properti
Lihat Referensi API untuk mengetahui detail tentang metode delete
link Pengguna Akun, Link Pengguna Properti Web, dan Link Pengguna Tampilan (Profil).
Memperbarui satu pengguna
Izin pengguna juga dapat diperbarui menggunakan Management API. Misalnya, langkah-langkah untuk mengubah tingkat izin pengguna dari READ_AND_ANALYZE
menjadi EDIT
, dengan asumsi Anda tidak mengetahui nama atau ID tampilan (profil), adalah:
Dapatkan semua penautan pengguna untuk setiap level entitas Jalankan 3 permintaan
list
untuk akun:Menemukan dan memperbarui pengguna dengan izin lokal. Untuk setiap respons yang diterima dari 3 operasi daftar di langkah #1, lakukan iterasi melalui setiap
entityUserLink
:- Jika properti
userRef
cocok dengan pengguna dan jika pengguna memiliki izinlocal
dengan aksesREAD_AND_ANALYZE
, maka eksekusiupdate
pada resource.
- Jika properti
Lihat Referensi API untuk mengetahui detail tentang metode update
link Pengguna Akun, Link Pengguna Properti Web, dan Link Pengguna Tampilan (Profil).
Menambahkan satu pengguna
Untuk menambahkan pengguna ke hierarki akun, misalnya ke tampilan (profil), diperlukan langkah-langkah berikut:
- Gunakan Management API atau Antarmuka Web untuk mengambil ID akun, properti, dan tampilan (profil).
- Tambahkan pengguna dengan menjalankan metode
insert
dari resourceprofileUserLinks
.
Pengelompokan
Ada peningkatan performa dan insentif kuota saat mengelompokkan permintaan tulis (hapus, masukkan, perbarui) API izin.
- Permintaan izin pengguna dalam batch dapat memanfaatkan pengoptimalan backend, dan memperoleh peningkatan performa yang signifikan.
- Setiap 30 permintaan API izin pengguna batch hanya dihitung sebagai operasi tulis tunggal.
- Hingga 300 permintaan API izin pengguna dapat dibuat dalam satu permintaan batch, yang memungkinkan QPS dengan batas per pengguna yang lebih tinggi.
Untuk mendapatkan hasil maksimal dari peningkatan performa ini, ada hal-hal tertentu yang harus Anda lakukan.
- Kelompokkan permintaan API berdasarkan pengguna.
- Hanya ajukan permintaan batch untuk satu akun. Permintaan izin pengguna yang dikelompokkan dengan lebih dari satu akun Google Analytics akan menyebabkan error dengan pesan berikut:
All batched requests must be under the same account
.
Penanganan Error
Semua panggilan izin dalam permintaan batch diperlakukan sebagai satu transaksi. Artinya, jika salah satu mutasi mengalami error, perubahan tidak akan dilakukan. Alasan kami memperlakukan mereka sebagai satu panggilan adalah:
- Beberapa pengeditan mungkin diperlukan untuk menyesuaikan izin pengguna tunggal. Jika salah satu pengeditan memiliki format yang salah, melakukan commit untuk bagian batch dapat menyebabkan izin pengguna berakhir dalam status yang tidak diinginkan.
- Dengan memperlakukan hasil edit sebagai satu transaksi, kami mengoptimalkan traffic dan dapat mengurangi kuota yang diperlukan untuk panggilan.
Contoh pengelompokan - Python
Di bawah ini adalah contoh sederhana di Python tentang cara mengelompokkan permintaan untuk menambahkan daftar pengguna ke kumpulan tampilan (profil). Contoh ini berulang melalui akun untuk pengguna yang diotorisasi, dan untuk setiap akun, satu permintaan batch dibuat. Dalam setiap permintaan batch, permintaan mengelompokkan semua perubahan untuk pengguna tertentu.
"""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'])
Langkah berikutnya
Selanjutnya, kita akan mempelajari cara menggunakan Google Analytics Management API untuk mengonfigurasi berbagai resource data.