ניהול משתמשים

ממשק ה-API לניהול Google Analytics מאפשר ניהול פרוגרמטי של הרשאות משתמשים. האפשרות הזו שימושית במיוחד לחברות גדולות שמתעדכנות בתדירות גבוהה ברשימות בקרת הגישה שלהן (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.

עדכון מספר גדול של משתמשים

כדי לעדכן את ההרשאות של מספר גדול של משתמשים, מומלץ מאוד להשתמש בחבילה. פעולה זו לא רק תחסוך במכסה, אלא גם תניב ביצועים טובים יותר, עיינו בקטע הבא בהמשך, לקבלת פרטים מלאים. אלו השלבים לביצוע החשבון:

  1. קבלת כל קישורי המשתמשים לחשבון:
    • list כל accountUserLinks.
  2. יוצרים בקשות לעדכון לכל משתמש עם ההרשאות המתאימות:
    • update עבור כל accountUserLink.
  3. מגדירים בקשת אצווה אחת לכל 300 משתמשים המכילה את בקשות העדכון שלמעלה:
    • התקשרות אל batch עבור כל 300 משתמשים.

מחיקת משתמש מהיררכיית החשבון

כדי להסיר את כל המופעים של משתמש מההיררכיה של החשבון (כלומר חשבון, נכסים ותצוגות מפורטות (פרופילים)). לשם כך:

  1. קבלת כל הקישורים למשתמשים בכל רמת ישות. הפעלה של 3 בקשות list לחשבון:
    • list כל accountUserLinks.
    • list כל webpropertyUserLinks על ידי הגדרת הפרמטר webpropertyId ל-~all.
    • list כל profileUserLinks על ידי הגדרת הפרמטרים webpropertyId ו-profileId כ-~all.
  2. איך למצוא ולמחוק משתמשים עם הרשאות מקומיות. עבור כל תשובה שמתקבלת מ-3 הפעולות ברשימה בשלב 1, חוזרים על הפעולה בכל entityUserLink:
    • אם המאפיינים userRef תואמים למשתמש וגם אם ההרשאות local מוגדרות ולאחר מכן מבצעים delete במשאב

בחומר העזר בנושא API אפשר לקרוא מידע נוסף על השיטה delete של קישורי משתמשים בחשבון, קישורים של משתמשים בנכס אינטרנט וקישורי משתמשים (פרופיל).

עדכון של משתמש יחיד

אפשר גם לעדכן הרשאות משתמש באמצעות ה-Management API. לדוגמה, השלבים לשינוי רמת ההרשאה של משתמש מ-READ_AND_ANALYZE ל-EDIT, בהנחה שלא יודעים את שם התצוגה המפורטת (הפרופיל) או את המזהה שלה:

  1. קבלת כל הקישורים למשתמשים בכל רמת ישות ביצוע 3 בקשות list לחשבון:

    • list כל accountUserLinks.
    • list כל webpropertyUserLinks על ידי הגדרת הפרמטר webpropertyId ל-~all.
    • list כל profileUserLinks על ידי הגדרת הפרמטרים webpropertyId ו-profileId כ-~all.
  2. למצוא ולעדכן את המשתמשים בהרשאות המקומיות. עבור כל תגובה שמתקבלת מ-3 הפעולות ברשימה בשלב 1, חוזרים על הפעולה בכל entityUserLink:

    • אם מאפייני userRef תואמים למשתמש וכן אם למשתמש יש הרשאות local עם הרשאת גישה ל-READ_AND_ANALYZE, צריך לבצע update במשאב.

בחומר העזר בנושא API אפשר לקרוא מידע נוסף על השיטה update של קישורי משתמשים בחשבון, קישורים של משתמשים בנכס אינטרנט וקישורי משתמשים (פרופיל).

הוספת משתמש יחיד

כדי להוסיף משתמש להיררכיה של החשבון, למשל לתצוגה מפורטת (פרופיל), נדרשים השלבים הבאים:

  1. משתמשים ב-Management API או בממשק האינטרנט כדי לאחזר את המזהים של החשבון, הנכס והתצוגה המפורטת (פרופיל).
  2. מוסיפים את המשתמש על ידי ביצוע השיטה insert למשאב profileUserLinks.

אצווה

יש שיפורי ביצועים ותמריצים שקשורים למכסה עבור אצווה של בקשות לכתיבה (מחיקה, הוספה, עדכון).

  • בקשות אצווה של הרשאות משתמשים יכולות לנצל את האופטימיזציה של הקצה העורפי ולשפר את הביצועים באופן משמעותי.
  • כל 30 בקשות API של הרשאת משתמש מקובצות נחשבות כפעולת כתיבה אחת בלבד.
  • ניתן לשלוח עד 300 בקשות API להרשאות משתמש בבקשת אצווה אחת, כך שרמת ה-PSPS גבוהה למשתמש תהיה גבוהה יותר.

כדי להפיק את המרב מרווחי הביצועים האלה, יש פעולות מסוימות שצריך לעשות.

  • מקבצים את בקשת ה-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 כדי להגדיר משאבי נתונים שונים.