Pengelolaan Pengguna

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:

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:

  1. Dapatkan semua link pengguna untuk akun:
    • list seluruh accountUserLinks.
  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 update 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 melakukannya adalah:

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

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:

  1. Dapatkan semua penautan pengguna untuk setiap level entitas Jalankan 3 permintaan list untuk akun:

    • list seluruh accountUserLinks.
    • list semua webpropertyUserLinks dengan menetapkan 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, maka eksekusi update pada resource.

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:

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

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.