مدیریت کاربر

Google Analytics Management API امکان مدیریت برنامه‌ای مجوزهای کاربر را فراهم می‌کند. این به ویژه برای شرکت های بزرگ با به روز رسانی مکرر لیست های کنترل دسترسی (ACL) مفید است.

معرفی

سه منبع اصلی وجود دارد که برای کنترل افرادی که می توانند به یک حساب، دارایی یا نمایش (نمایه) دسترسی داشته باشند، استفاده می شود:

همچنین پشتیبانی دسته ای ویژه ای برای عملیات نوشتن مجوزهای کاربر وجود دارد.

مجوزهای کاربر

یک کاربر که توسط یک حساب Google نشان داده می‌شود، می‌تواند سطوح زیر دسترسی به حساب، ویژگی یا نمای (نمایه) Google Analytics را داشته باشد:

  • MANAGE_USERS - برای درخواست نوشتن به APIهای مجوزهای کاربر مورد نیاز است.
  • EDIT - برای ویرایش منابع مدیریت داده مورد نیاز است.
  • COLLABORATE
  • READ_AND_ANALYZE

برای جزئیات بیشتر در مورد هر سطح دسترسی به مقاله مرکز راهنمایی مجوزهای کاربر مراجعه کنید.

تخصیص مجوزها

API دو نوع مجوز را نشان می دهد: local و effective . مجوزهای محلی برای حساب، دارایی یا نمای (نمایه) داده شده اعمال می شود. هنگام تخصیص مجوزها با API، باید از ویژگی permissions.local استفاده کنید. مجوزهای Effective نشان دهنده مجوزهایی هستند که از منابع والد به ارث رسیده اند.

مجوزهای ارثی

اگر به کاربر اجازه EDIT در یک حساب اعطا شود، تمام نمایه ها و ویژگی های تحت آن حساب این مجوزها را به ارث خواهند برد. این با ویژگی permissions.effective نشان داده می شود.

موارد استفاده کنید

مجوزهای کاربر در مدیریت API را می توان برای حل موارد استفاده زیر استفاده کرد:

همه کاربران را برای یک حساب فهرست کنید

برای فهرست کردن همه کاربران برای یک حساب، از جمله همه کاربرانی که مجوزهای مربوط به هر ویژگی یا نمایش (نمایه) در حساب را دارند، روش list منبع accountUserLinks را اجرا کنید.

تعداد زیادی از کاربران را به روز کنید

برای به روز رسانی مجوزها برای تعداد زیادی از کاربران، به شدت توصیه می شود از دسته بندی استفاده کنید. این نه تنها سهمیه را ذخیره می کند بلکه عملکرد بسیار بیشتری نیز خواهد داشت -- برای جزئیات کامل به بخش دسته بندی زیر مراجعه کنید. مراحل مورد نیاز برای انجام این کار برای یک حساب کاربری عبارتند از:

  1. دریافت تمام پیوندهای کاربر برای حساب :
    • list تمام accountUserLinks
  2. درخواست های به روز رسانی را برای هر کاربر با مجوزهای مناسب بسازید :
    • update برای هر accountUserLink .
  3. برای هر 300 کاربر که شامل درخواست‌های به‌روزرسانی فوق است، یک درخواست دسته‌ای ایجاد کنید:
    • batch تماس برای هر 300 کاربر.

حذف یک کاربر از سلسله مراتب حساب

برای حذف تمام رخدادهای یک کاربر از سلسله مراتب حساب (یعنی حساب، ویژگی ها، و بازدیدها (نمایه ها)). مراحل لازم برای انجام این کار عبارتند از:

  1. همه پیوندهای کاربر را برای هر سطح موجودیت دریافت کنید. 3 درخواست list برای حساب اجرا کنید:
    • list تمام accountUserLinks
    • با تنظیم پارامتر webpropertyId روی ~all ، تمام webpropertyUserLinks list .
    • همه profileUserLinks با تنظیم پارامترهای webpropertyId و profileId روی ~all list .
  2. کاربران با مجوزهای محلی را پیدا و حذف کنید. برای هر پاسخ دریافتی از 3 عملیات لیست در مرحله 1، از طریق هر entityUserLink تکرار کنید:
    • اگر ویژگی های userRef با کاربر مطابقت داشته باشد و اگر مجوزهای local تنظیم شده باشد ، یک delete در منبع اجرا کنید.

برای جزئیات بیشتر در مورد روش delete پیوندهای کاربر حساب، پیوندهای کاربر دارایی وب، و مشاهده (نمایه) منابع پیوندهای کاربر، به مرجع API مراجعه کنید.

به روز رسانی یک کاربر

مجوزهای کاربر همچنین می تواند با استفاده از مدیریت API به روز شود. برای مثال، مراحل تغییر سطح مجوزهای کاربر از READ_AND_ANALYZE به EDIT ، با فرض اینکه نام یا شناسه نما (نمایه) را نمی‌دانید، عبارتند از:

  1. دریافت تمام پیوندهای کاربر برای هر سطح موجودیت 3 درخواست list برای حساب اجرا کنید:

    • list تمام accountUserLinks
    • با تنظیم پارامتر webpropertyId روی ~all ، تمام webpropertyUserLinks list .
    • همه profileUserLinks با تنظیم پارامترهای webpropertyId و profileId روی ~all list .
  2. کاربران را با مجوزهای محلی پیدا و به روز کنید. برای هر پاسخ دریافتی از 3 عملیات لیست در مرحله 1، از طریق هر entityUserLink تکرار کنید:

    • اگر ویژگی های userRef با کاربر مطابقت دارد و اگر کاربر مجوزهای local با دسترسی READ_AND_ANALYZE دارد ، یک update در منبع اجرا کنید.

برای جزئیات بیشتر در مورد روش update پیوندهای کاربر حساب، پیوندهای کاربر دارایی وب، و مشاهده (نمایه) منابع پیوندهای کاربر، به مرجع API مراجعه کنید.

یک کاربر واحد اضافه کنید

برای افزودن یک کاربر به سلسله مراتب حساب، به عنوان مثال به یک نمای (نمایه)، مراحل زیر نیاز است:

  1. از مدیریت API یا رابط وب برای بازیابی شناسه‌های حساب، دارایی و نما (نمایه) استفاده کنید.
  2. با اجرای روش insert منبع profileUserLinks کاربر را اضافه کنید.

دسته بندی

هنگام جمع‌بندی درخواست‌های نوشتن API مجوز (حذف، درج، به‌روزرسانی) افزایش عملکرد و مشوق‌های سهمیه وجود دارد.

  • درخواست‌های دسته‌ای مجوزهای کاربر می‌توانند از بهینه‌سازی‌های Backend بهره ببرند و دستاوردهای عملکرد قابل توجهی را مشاهده کنند.
  • هر 30 درخواست دسته ای مجوز کاربر API تنها به عنوان یک عملیات نوشتن به حساب می آید.
  • حداکثر 300 درخواست API مجوزهای کاربر را می‌توان در یک درخواست دسته‌ای انجام داد، که اجازه می‌دهد برای هر کاربر محدودیت QPS بالاتری داشته باشد.

برای اینکه بیشترین بهره را از این دستاوردهای عملکردی ببرید، کارهای خاصی باید انجام دهید.

  • درخواست API خود را بر اساس کاربر گروه بندی کنید.
  • فقط درخواست های دسته ای برای یک حساب. درخواست‌های دسته‌ای مجوزهای کاربر با بیش از یک حساب Google Analytics منجر به خطایی با پیام زیر می‌شود: All batched requests must be under the same account .

رسیدگی به خطا

همه تماس‌های مجوز در یک درخواست دسته‌ای به عنوان یک تراکنش واحد در نظر گرفته می‌شوند. این بدان معنی است که اگر هر یک از جهش ها خطا داشته باشد، هیچ تغییری ایجاد نمی شود. دلایلی که ما آنها را به عنوان یک تماس واحد در نظر می گیریم عبارتند از:

  • ممکن است برای تنظیم مجوزهای یک کاربر به چندین ویرایش نیاز باشد. اگر یکی از ویرایش‌ها نادرست باشد، انجام بخشی از دسته می‌تواند باعث شود که مجوزهای کاربر به وضعیت نامطلوبی برسد.
  • با در نظر گرفتن ویرایش ها به عنوان یک تراکنش، ترافیک را بهینه می کنیم و می توانیم سهمیه مورد نیاز برای تماس را کاهش دهیم.

نمونه دسته بندی - پایتون

در زیر یک مثال ساده در پایتون از نحوه دسته‌بندی درخواست‌ها برای افزودن لیستی از کاربران به مجموعه‌ای از نماها (پروفایل) آورده شده است. مثال از طریق حساب‌ها برای کاربر مجاز حلقه می‌زند و برای هر حساب یک درخواست دسته‌ای ایجاد می‌کند. در هر درخواست دسته ای، تمام تغییرات یک کاربر معین را گروه بندی می کند.


"""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'])

مراحل بعدی

در ادامه نحوه استفاده از Google Analytics Management API برای پیکربندی منابع داده مختلف را بررسی خواهیم کرد.