Google Analytics Management API memungkinkan pengelolaan izin pengguna secara terprogram. Hal ini sangat berguna untuk perusahaan besar dengan pembaruan berkala pada daftar kontrol akses (ACL) mereka.
Pengantar
Ada tiga resource utama yang digunakan untuk mengontrol siapa saja yang dapat mengakses akun, properti, atau tampilan (profil):
Ada juga dukungan batching khusus untuk operasi tulis izin pengguna.
Izin Pengguna
Pengguna, diwakili oleh Akun Google, dapat diberikan 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 mengetahui 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
di 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:
- Mendata semua pengguna untuk akun
- Memperbarui pengguna dalam jumlah besar
- Menghapus pengguna dari hierarki akun
- Memperbarui satu pengguna
- Menambahkan satu pengguna
Menampilkan daftar semua pengguna untuk akun
Untuk mencantumkan semua pengguna untuk akun, termasuk semua pengguna yang memiliki izin di properti atau tampilan (profil) apa pun di akun, jalankan metode list
dari resource accountUserLinks.
Memperbarui pengguna dalam jumlah besar
Untuk memperbarui izin bagi sejumlah besar pengguna, sebaiknya Anda menggunakan pengelompokan; tindakan ini tidak hanya akan menghemat kuota, tetapi juga akan jauh lebih berperforma tinggi -- lihat bagian pengelompokan di bawah untuk detail selengkapnya. Langkah-langkah yang diperlukan untuk melakukan langkah ini untuk akun adalah:
- Dapatkan semua link pengguna untuk akun tersebut:
list
accountUserLinks
seluruhnya.
- Buat permintaan update untuk setiap pengguna dengan izin yang sesuai:
update
untuk setiapaccountUserLink
.
- Buat satu permintaan batch untuk setiap 300 pengguna yang berisi permintaan pembaruan 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 melakukan hal ini adalah:
- Dapatkan semua link pengguna untuk setiap tingkat entitas. Jalankan 3 permintaan
list
untuk akun: - Menemukan dan menghapus 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
dari Link Pengguna Akun, Link Pengguna Properti Web, dan resource Lihat Link Pengguna (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
adalah dengan asumsi bahwa Anda tidak mengetahui nama atau ID tampilan (profil), yaitu:
Dapatkan semua link pengguna untuk setiap tingkat 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
lalu jalankanupdate
di resource.
- Jika properti
Lihat Referensi API untuk mengetahui detail tentang metode update
dari Link Pengguna Akun, Link Pengguna Properti Web, dan resource Lihat Link Pengguna (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 bagi akun, properti, dan tampilan (profil).
- Tambahkan pengguna dengan menjalankan metode
insert
resourceprofileUserLinks
.
Pengelompokan
Ada peningkatan performa dan insentif kuota saat permintaan batch API menulis (menghapus, menyisipkan, memperbarui).
- Permintaan izin pengguna dalam batch dapat memanfaatkan pengoptimalan backend, dan mendapatkan peningkatan performa yang signifikan.
- Setiap 30 permintaan API izin pengguna batch hanya dihitung sebagai satu operasi tulis.
- Hingga 300 permintaan API izin pengguna dapat dibuat dalam satu permintaan batch, yang memungkinkan QPS per pengguna lebih tinggi.
Untuk mendapatkan hasil maksimal dari peningkatan performa ini, ada beberapa hal tertentu yang harus Anda lakukan.
- Kelompokkan permintaan API Anda berdasarkan pengguna.
- Hanya permintaan batch untuk satu akun. Permintaan izin pengguna yang dikelompokkan dengan lebih dari satu akun Google Analytics akan mengakibatkan 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 ada mutasi yang mengalami error, tidak ada perubahan yang dilakukan. Alasan kami memperlakukannya sebagai satu panggilan adalah:
- Beberapa pengeditan mungkin diperlukan untuk menyesuaikan izin satu pengguna. Jika salah satu hasil edit memiliki format yang salah, commit bagian dari batch dapat menyebabkan izin pengguna berakhir dengan kondisi 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 sekumpulan tampilan (profil). Contoh ini berulang melalui akun untuk pengguna yang diotorisasi, dan untuk setiap akun membuat satu permintaan batch. Dalam setiap permintaan batch, laporan ini 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.