Pengelolaan Pengguna

Google Analytics Management API memungkinkan pengelolaan izin pengguna secara terprogram. Hal ini sangat berguna bagi perusahaan besar yang sering memperbarui daftar kontrol akses (ACL).

Pengantar

Ada tiga resource utama yang digunakan untuk mengontrol siapa saja 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 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 memberikan 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 sebuah akun, semua profil dan properti di bawah akun tersebut akan mewarisi izin ini; hal ini akan ditunjukkan 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 di 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 jauh lebih efektif -- 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 semua 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:
    • memanggil 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 tingkat entitas. Jalankan 3 permintaan list untuk akun:
    • list semua 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 yang memiliki izin lokal. Untuk setiap respons yang diterima dari 3 operasi daftar pada langkah 1, lakukan iterasi pada setiap entityUserLink:
    • jika properti userRef cocok dengan pengguna dan jika izin local telah ditetapkan, maka jalankan delete pada resource

Lihat Referensi API untuk mengetahui detail tentang metode delete link Pengguna Akun, Penautan Pengguna Properti Web, dan Lihat (Profil) Link Pengguna.

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 link pengguna untuk setiap tingkat entitas Jalankan 3 permintaan list untuk akun:

    • list semua accountUserLinks.
    • list semua webpropertyUserLinks dengan menetapkan parameter webpropertyId ke ~all.
    • list semua profileUserLinks dengan menetapkan parameter webpropertyId dan profileId ke ~all.
  2. Temukan dan perbarui pengguna dengan izin lokal. Untuk setiap respons yang diterima dari 3 operasi daftar pada langkah #1, lakukan iterasi melalui setiap entityUserLink:

    • Jika properti userRef cocok dengan pengguna dan pengguna memiliki izin local dengan akses READ_AND_ANALYZE, maka jalankan update pada resource.

Lihat Referensi API untuk mengetahui detail tentang metode update link Pengguna Akun, Penautan Pengguna Properti Web, dan Lihat (Profil) Link Pengguna.

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 menulis (hapus, sisipkan, perbarui) API izin.

  • Permintaan izin pengguna dalam batch dapat memanfaatkan pengoptimalan backend, dan melihat peningkatan performa yang signifikan.
  • Setiap 30 permintaan API izin pengguna yang dikelompokkan 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 tersebut, ada hal-hal tertentu yang harus Anda lakukan.

  • Kelompokkan permintaan API berdasarkan pengguna.
  • Hanya permintaan batch untuk satu akun. Permintaan izin pengguna yang dikelompokkan dengan lebih dari satu akun Google Analytics akan menghasilkan 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. Ini berarti bahwa jika salah satu mutasi terjadi secara keliru, tidak ada perubahan yang dilakukan. Alasan kami memperlakukannya sebagai satu panggilan adalah:

  • Beberapa pengeditan mungkin diperlukan untuk menyesuaikan izin satu pengguna. Jika salah satu pengeditan memiliki format yang salah, melakukan commit sebagian dari 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 akan diulangi di beberapa akun untuk pengguna yang diotorisasi, dan satu permintaan batch dibuat untuk setiap akun. Dalam setiap permintaan batch, class 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.