Pengelolaan Pengguna

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:

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:

  1. Dapatkan semua link pengguna untuk akun tersebut:
    • list accountUserLinks seluruhnya.
  2. Buat permintaan update untuk setiap pengguna dengan izin yang sesuai:
    • update untuk setiap accountUserLink.
  3. Buat satu permintaan batch untuk setiap 300 pengguna yang berisi permintaan pembaruan di atas:
    • panggil batch untuk setiap 300 pengguna.

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:

  1. Dapatkan semua link pengguna untuk setiap tingkat entitas. Jalankan 3 permintaan list untuk akun:
    • list accountUserLinks seluruhnya.
    • list semua webpropertyUserLinks dengan menyetel parameter webpropertyId ke ~all.
    • list semua profileUserLinks dengan menetapkan parameter webpropertyId dan profileId ke ~all.
  2. 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 izin local ditetapkan, maka jalankan delete pada resource

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:

  1. Dapatkan semua link pengguna untuk setiap tingkat entitas Jalankan 3 permintaan list untuk akun:

    • list accountUserLinks seluruhnya.
    • list semua webpropertyUserLinks dengan menyetel parameter webpropertyId ke ~all.
    • list semua profileUserLinks dengan menetapkan parameter webpropertyId dan profileId ke ~all.
  2. 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 izin local dengan akses READ_AND_ANALYZE lalu jalankan update di resource.

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:

  1. Gunakan Management API atau Antarmuka Web untuk mengambil ID bagi akun, properti, dan tampilan (profil).
  2. Tambahkan pengguna dengan menjalankan metode insert resource profileUserLinks.

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.