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 را اجرا کنید.
تعداد زیادی از کاربران را به روز کنید
برای به روز رسانی مجوزها برای تعداد زیادی از کاربران، به شدت توصیه می شود از دسته بندی استفاده کنید. این نه تنها سهمیه را ذخیره می کند بلکه عملکرد بسیار بیشتری نیز خواهد داشت -- برای جزئیات کامل به بخش دسته بندی زیر مراجعه کنید. مراحل مورد نیاز برای انجام این کار برای یک حساب کاربری عبارتند از:
- دریافت تمام پیوندهای کاربر برای حساب :
-
list
تمامaccountUserLinks
-
- درخواست های به روز رسانی را برای هر کاربر با مجوزهای مناسب بسازید :
-
update
برای هرaccountUserLink
.
-
- برای هر 300 کاربر که شامل درخواستهای بهروزرسانی فوق است، یک درخواست دستهای ایجاد کنید:
-
batch
تماس برای هر 300 کاربر.
-
حذف یک کاربر از سلسله مراتب حساب
برای حذف تمام رخدادهای یک کاربر از سلسله مراتب حساب (یعنی حساب، ویژگی ها، و بازدیدها (نمایه ها)). مراحل لازم برای انجام این کار عبارتند از:
- همه پیوندهای کاربر را برای هر سطح موجودیت دریافت کنید. 3 درخواست
list
برای حساب اجرا کنید: - کاربران با مجوزهای محلی را پیدا و حذف کنید. برای هر پاسخ دریافتی از 3 عملیات لیست در مرحله 1، از طریق هر
entityUserLink
تکرار کنید:- اگر ویژگی های
userRef
با کاربر مطابقت داشته باشد و اگر مجوزهایlocal
تنظیم شده باشد ، یکdelete
در منبع اجرا کنید.
- اگر ویژگی های
برای جزئیات بیشتر در مورد روش delete
پیوندهای کاربر حساب، پیوندهای کاربر دارایی وب، و مشاهده (نمایه) منابع پیوندهای کاربر، به مرجع API مراجعه کنید.
به روز رسانی یک کاربر
مجوزهای کاربر همچنین می تواند با استفاده از مدیریت API به روز شود. برای مثال، مراحل تغییر سطح مجوزهای کاربر از READ_AND_ANALYZE
به EDIT
، با فرض اینکه نام یا شناسه نما (نمایه) را نمیدانید، عبارتند از:
دریافت تمام پیوندهای کاربر برای هر سطح موجودیت 3 درخواست
list
برای حساب اجرا کنید:کاربران را با مجوزهای محلی پیدا و به روز کنید. برای هر پاسخ دریافتی از 3 عملیات لیست در مرحله 1، از طریق هر
entityUserLink
تکرار کنید:- اگر ویژگی های
userRef
با کاربر مطابقت دارد و اگر کاربر مجوزهایlocal
با دسترسیREAD_AND_ANALYZE
دارد ، یکupdate
در منبع اجرا کنید.
- اگر ویژگی های
برای جزئیات بیشتر در مورد روش update
پیوندهای کاربر حساب، پیوندهای کاربر دارایی وب، و مشاهده (نمایه) منابع پیوندهای کاربر، به مرجع API مراجعه کنید.
یک کاربر واحد اضافه کنید
برای افزودن یک کاربر به سلسله مراتب حساب، به عنوان مثال به یک نمای (نمایه)، مراحل زیر نیاز است:
- از مدیریت API یا رابط وب برای بازیابی شناسههای حساب، دارایی و نما (نمایه) استفاده کنید.
- با اجرای روش
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 برای پیکربندی منابع داده مختلف را بررسی خواهیم کرد.