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.
תרחישים לדוגמה
ניתן להשתמש בהרשאות משתמשים ב-Management API כדי לפתור את התרחישים הבאים:
- פירוט כל המשתמשים בחשבון
- עדכון של מספר גדול של משתמשים
- מחיקת משתמש מהיררכיית החשבון
- עדכון של משתמש יחיד
- הוספת משתמש יחיד
הצגת רשימה של כל המשתמשים בחשבון מסוים
כדי להציג רשימה של כל המשתמשים בחשבון מסוים, כולל כל המשתמשים שיש להם הרשאות לנכס או לתצוגה מפורטת (פרופיל) כלשהו בחשבון, צריך להפעיל את השיטה list
של המשאב accountUserLinks.
עדכון של מספר גדול של משתמשים
כדי לעדכן הרשאות למספר גדול של משתמשים, מומלץ להשתמש בקיבוץ. הפעולה הזו לא רק תחסוך במכסה אלא גם תהיה יעילה הרבה יותר. לפרטים מלאים, ניתן לעיין בקטע בנושא אצווה בהמשך. כדי לעשות זאת בחשבון, צריך לפעול לפי השלבים הבאים:
- הצגת כל הקישורים של המשתמשים בחשבון:
list
כלaccountUserLinks
.
- ליצור בקשות עדכון לכל משתמש עם ההרשאות המתאימות:
update
לכלaccountUserLink
.
- ליצור בקשת אצווה אחת לכל 300 משתמשים שמכילה את בקשות העדכון שלמעלה:
- קוראים לפונקציה
batch
לכל 300 משתמשים.
- קוראים לפונקציה
מחיקת משתמש מהיררכיית החשבון
כדי להסיר את כל המופעים של משתמש מהיררכיית החשבון (כלומר חשבון, נכסים ותצוגות מפורטות (פרופילים)). השלבים הנדרשים לביצוע הפעולה הזו הם:
- קבלת כל קישורי המשתמשים לכל רמת ישות. ביצוע 3 בקשות
list
עבור החשבון: - איתור ומחיקת משתמשים עם הרשאות מקומיות. על כל תשובה שמתקבלת מ-3 הפעולות ברשימה שבשלב 1, עוברים על כל
entityUserLink
:- אם מאפייני
userRef
תואמים למשתמש וגם אם ההרשאותlocal
מוגדרות אז מריציםdelete
במשאב
- אם מאפייני
בחומר העזר בנושא API אפשר לקרוא פרטים נוספים על השיטה delete
של קישורי משתמש בחשבון, קישורי משתמשים בנכס אינטרנט וצפייה בקישורי משתמשים (פרופיל).
עדכון של משתמש יחיד
ניתן לעדכן את הרשאות המשתמשים גם באמצעות ממשק ה-API לניהול. לדוגמה, השלבים לשינוי רמת ההרשאות של המשתמש מ-READ_AND_ANALYZE
ל-EDIT
, בהנחה שלא ידוע לכם השם או המזהה של התצוגה המפורטת (הפרופיל) הם:
קבלת כל קישורי המשתמשים לכל רמת ישות ביצוע 3 בקשות
list
עבור החשבון:איתור משתמשים והגדרתם להם הרשאות מקומיות. עבור כל תגובה שמתקבלת מ-3 הפעולות ברשימה בשלב 1, יש לחזור על כל
entityUserLink
:- אם הנכסים של
userRef
תואמים למשתמש וגם אם למשתמש יש הרשאותlocal
עם גישהREAD_AND_ANALYZE
, אז הוא יפעילupdate
במשאב.
- אם הנכסים של
בחומר העזר בנושא API אפשר לקרוא פרטים נוספים על השיטה update
של קישורי משתמש בחשבון, קישורי משתמשים בנכס אינטרנט וצפייה בקישורי משתמשים (פרופיל).
הוספת משתמש יחיד
כדי להוסיף משתמש להיררכיית החשבון, למשל לתצוגה מפורטת (פרופיל), נדרשים השלבים הבאים:
- השתמש בממשק API לניהול או בממשק אינטרנט כדי לאחזר מזהים של החשבון, הנכס והתצוגה המפורטת (פרופיל).
- כדי להוסיף את המשתמש, צריך לבצע את השיטה
insert
של המשאבprofileUserLinks
.
אצווה
יש שיפורי ביצועים ותמריצים למכסות כאשר מקבצים בקשות לכתיבה (מחיקה, הוספה, עדכון) של הרשאות API.
- בקשות מקובצות להרשאות משתמש יכולות לנצל אופטימיזציות של קצה עורפי ולהשיג שיפורי ביצועים משמעותיים.
- כל 30 בקשות אצווה של API להרשאת משתמש נספרות כפעולת כתיבה יחידה בלבד.
- אפשר לשלוח עד 300 בקשות API להרשאות משתמש בבקשה אחת, וכך לקבל QPS גבוה יותר לכל משתמש.
כדי להפיק את המרב מהשיפור בביצועים, יש כמה דברים שכדאי לעשות.
- קיבוץ של בקשת ה-API לפי משתמש.
- רק בקשות באצווה עבור חשבון אחד. בקשות מקובצות להרשאות משתמש עם יותר מחשבון Google Analytics אחד יגרמו לשגיאה עם ההודעה הבאה:
All batched requests must be under the same account
.
טיפול בשגיאות
כל הקריאות להרשאות בבקשה באצווה נחשבות כעסקה אחת. המשמעות היא שאם אחת מהמוטציות שגויות, לא יבוצעו שינויים. לכן אנו מתייחסים אליהם כאל קריאה אחת בלבד:
- כדי לשנות הרשאות של משתמש יחיד צריך לערוך כמה פעמים. אם אחת מהעריכות פגומה, ביצוע חלק מהאצווה עלול לגרום לכך שהרשאות המשתמש יגיעו למצב לא רצוי.
- כשאנחנו מתייחסים לעריכות כעסקה אחת, אנחנו מבצעים אופטימיזציה של התנועה ויכולים להקטין את המכסה הנדרשת לשיחה.
דוגמה לקובץ אצווה – Python
הנה דוגמה פשוטה ב-Python לאופן שבו בקשות אצווה להוספת רשימה של משתמשים לקבוצה של תצוגות מפורטות (פרופילים). הדוגמה עוברת על החשבונות של המשתמש המורשה, ולכל חשבון יוצרת בקשת אצווה אחת. בתוך כל בקשה באצווה, המערכת מקבצת את כל השינויים למשתמש נתון.
"""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 כדי להגדיר משאבי נתונים שונים.