تتيح Google Analytics Management API إدارة آلية لأذونات المستخدمين. وهذا مفيد على وجه الخصوص للشركات الكبيرة التي لديها تعديلات متكرّرة على قوائم التحكّم بالوصول (ACLs).
مقدمة
هناك ثلاثة موارد رئيسية تُستخدم للتحكم في الأشخاص الذين يمكنهم الوصول إلى حساب أو موقع أو عرض (ملف شخصي):
هناك أيضًا دعم خاص على التجميع لعمليات الكتابة لأذونات المستخدمين.
أذونات المستخدمين
يمكن منح المستخدِم، الذي يمثّل حساب Google، مستويات الوصول التالية إلى حساب أو موقع أو ملف شخصي على "إحصاءات Google":
MANAGE_USERS
: هذا الإذن مطلوب لإرسال طلبات تعديل إلى واجهات برمجة التطبيقات لأذونات المستخدمين.EDIT
: الإذن مطلوب لتعديل موارد إدارة البيانات.COLLABORATE
READ_AND_ANALYZE
للحصول على تفاصيل إضافية حول كل مستوى وصول، يُرجى الاطّلاع على مقالة مركز المساعدة أذونات المستخدمين.
تعيين الأذونات
تعرض واجهة برمجة التطبيقات نوعَين من الأذونات: local
وeffective
. تنطبق الأذونات المحلية على الحساب أو الموقع أو الملف الشخصي المحدّد. عند منح الأذونات من خلال واجهة برمجة التطبيقات، عليك استخدام السمة permissions.local
. تمثل أذونات Effective
الأذونات المكتسبة من الموارد الرئيسية.
الأذونات المكتسَبة
إذا تم منح مستخدِم إذن EDIT
في أحد الحسابات، ستكتسب جميع الملفات الشخصية والمواقع ضمن هذا الحساب هذه الأذونات، وسيتم تمثيل ذلك من خلال الموقع الأذونات الفعال من الأذونات.
حالات الاستخدام
يمكن استخدام أذونات المستخدمين في Management API لحل حالات الاستخدام التالية:
- إدراج جميع المستخدمين لحساب واحد
- تحديث عدد كبير من المستخدمين
- حذف مستخدم من التدرّج الهرمي للحساب
- تعديل بيانات مستخدم واحد
- إضافة مستخدم واحد
إدراج جميع مستخدمي حساب واحد
لإدراج جميع مستخدمي حساب، بما في ذلك جميع المستخدمين الذين لديهم أذونات في أي موقع أو ملف شخصي (ملف شخصي) في الحساب، نفِّذ الإجراء list
في مورد accountUserLinks.
تحديث عدد كبير من المستخدمين
ولتعديل الأذونات لعدد كبير من المستخدمين، يُنصح بشدة باستخدام ميزة التجميع. لن يؤدي ذلك إلى توفير الحصة فحسب، بل سيكون أكثر فعالية أيضًا. راجِع قسم التجميع أدناه للاطّلاع على التفاصيل الكاملة. الخطوات المطلوبة لتنفيذ ذلك للحساب هي:
- الحصول على جميع روابط المستخدمين للحساب:
list
كلaccountUserLinks
.
- إنشاء طلبات تعديل لكل مستخدم لديه الأذونات المناسبة:
update
لكلaccountUserLink
- يمكنك إنشاء طلب مجمّع واحد لكل 300 مستخدم يتضمّن طلبات التعديل أعلاه:
- الاتصال
batch
لكل 300 مستخدم.
- الاتصال
حذف مستخدم من التسلسل الهرمي للحساب
إزالة جميع مواضع ورود المستخدم من التسلسل الهرمي للحساب (أي الحساب والمواقع والملفات الشخصية (الملفات الشخصية)) الخطوات المطلوبة لتنفيذ هذا الإجراء هي:
- احصل على جميع روابط المستخدمين لكل مستوى من مستويات الكيان. تنفيذ 3 طلبات من "
list
" للحساب: - يمكنك البحث عن المستخدمين الذين لديهم أذونات على الجهاز وحذفهم. لكل رد تم استلامه من عمليات القائمة الثلاث في الخطوة 1، كرِّر كل
entityUserLink
:- إذا كانت السمات
userRef
تتطابق مع المستخدم وكذلك إذا تم ضبط أذوناتlocal
، يمكنك تنفيذdelete
على المورد.
- إذا كانت السمات
اطّلِع على مرجع واجهة برمجة التطبيقات للحصول على تفاصيل حول طريقة delete
لـ "روابط مستخدمي الحسابات" و"روابط مستخدمي الموقع الإلكتروني" و"روابط المستخدمين للملف الشخصي".
تعديل بيانات مستخدم واحد
يمكن أيضًا تعديل أذونات المستخدمين باستخدام Management API. على سبيل المثال، في ما يلي خطوات تغيير مستوى أذونات المستخدِم من "READ_AND_ANALYZE
" إلى "EDIT
"، على افتراض أنّك لا تعرف اسم الملف الشخصي أو رقم تعريفه:
الحصول على كل روابط المستخدِمين لكل مستوى الكيان نفِّذ 3 طلبات
list
للحساب:العثور على المستخدمين وإبلاغهم بالأذونات المحلية لكل رد تم استلامه من عمليات القائمة الثلاث في الخطوة رقم 1، كرر كل
entityUserLink
:- في حال تطابقت السمتان
userRef
مع المستخدم و إذا كان المستخدم يملك أذوناتlocal
مع الوصولREAD_AND_ANALYZE
، يمكنك تنفيذupdate
في المورد.
- في حال تطابقت السمتان
اطّلِع على مرجع واجهة برمجة التطبيقات للحصول على تفاصيل حول طريقة update
لـ "روابط مستخدمي الحسابات" و"روابط مستخدمي الموقع الإلكتروني" و"روابط المستخدمين للملف الشخصي".
إضافة مستخدم واحد
لإضافة مستخدم إلى التدرج الهرمي للحساب، يتطلب ذلك مثلاً الخطوات التالية:
- استخدِم واجهة برمجة تطبيقات الإدارة أو واجهة الويب لاسترداد أرقام التعريف للحساب والموقع والملف الشخصي (الملف الشخصي).
- يمكنك إضافة المستخدم من خلال تنفيذ طريقة
insert
لموردprofileUserLinks
.
التجميع
هناك مكاسب في الأداء وحوافز على شكل حصص عند تجميع طلبات البيانات من واجهة برمجة التطبيقات للإذن بالحذف (الحذف والإدراج والتعديل).
- يمكن لطلبات أذونات المستخدمين المجمّعة الاستفادة من تحسينات الواجهة الخلفية وتحقيق مكاسب كبيرة في الأداء.
- يتم احتساب كل 30 طلبًا مجمّعًا لأذونات المستخدمين على أنّه عملية كتابة واحدة فقط.
- يمكن إجراء ما يصل إلى 300 طلب من واجهة برمجة التطبيقات لأذونات المستخدمين في كل طلب مجمّع، ما يسمح بزيادة عدد الطلبات في الثانية بحد أقصى لكل مستخدم.
لتحقيق أقصى استفادة من مكاسب الأداء هذه، هناك بعض الإجراءات التي يجب عليك القيام بها.
- يمكنك تجميع طلب البيانات من واجهة برمجة التطبيقات حسب المستخدم.
- الطلبات المجمّعة لحساب واحد فقط. ستؤدي طلبات أذونات المستخدمين المجمّعة باستخدام أكثر من حساب واحد على "إحصاءات Google" إلى ظهور رسالة خطأ تتضمّن الرسالة التالية:
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 لضبط موارد البيانات المختلفة.