תיקון שגיאות והפעלה מחדש של מינוי ל-Google Workspace

בדף הזה מוסבר איך להפעיל מחדש מינוי ל-Google Workspace שהושעה. כדי לעשות זאת, צריך לפתור שגיאות או לפתור בעיות, ולהתקשר לשיטת subscriptions.reactivate.

המינויים ל-Google Workspace מושעים בכל פעם ששגיאה מונעת מהמינוי לקבל אירועים. לדוגמה, המינוי מושעה אם לא ניתן למצוא את משאב היעד או את נקודת הקצה של ההתראות. אחרי שתפתרו את השגיאות במינוי, תוכלו להפעיל אותו מחדש כדי להתחיל לקבל שוב אירועים.

כדי לקבל מידע על מינוי שהושעה:

  • האפליקציה שלך מקבלת אירוע במחזור חיים לגבי ההשעיה. אם המינוי שלכם מושעה בגלל שגיאה בנקודת הקצה שלו, יכול להיות שלא תקבלו אירוע מחזור חיים.
  • משתמשים בשיטות subscriptions.get או subscriptions.list כדי לראות אם השדה state של המינוי מוגדר לערך SUSPENDED.
  • אתם מקבלים התראה על כשל במסירה לנקודת הקצה של ההתראות. מידע נוסף על מעקב אחרי כשלים במסירה לנושאי Google Cloud Pub/Sub זמין במאמר טיפול בכשלים בהודעות.

המינויים שהופעלו מחדש שומרים על תאריך התפוגה המקורי. כדי להאריך את תוקף המינוי, אפשר לעיין במאמר עדכון או חידוש של מינוי ל-Google Workspace.

Apps Script

  • מינוי ל-Google Workspace. כדי ליצור מינוי, אפשר לעיין במאמר יצירת מינוי.

  • פרויקט Apps Script:
    • אפשר להשתמש בפרויקט Google Cloud במקום בפרויקט ברירת המחדל שנוצר אוטומטית על ידי Apps Script.
    • לכל היקפי ההרשאות שהוספתם כדי להגדיר את מסך ההסכמה ל-OAuth, אתם צריכים להוסיף את היקפי ההרשאות גם לקובץ appsscript.json בפרויקט Apps Script. לדוגמה, אם ציינתם את ההיקף chat.messages, צריך להוסיף את הפרטים הבאים:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • מפעילים את השירות המתקדם Google Workspace Events.

Python

  • ‫Python 3.6 ואילך
  • הכלי לניהול חבילות pip
  • ספריות הלקוח העדכניות של Google ל-Python. כדי להתקין או לעדכן אותם, מריצים את הפקודה הבאה בממשק שורת הפקודה:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

זיהוי ותיקון שגיאות

כדי לזהות את השגיאה במינוי, בודקים את השדה suspensionReason של המינוי. השדה הזה מופיע כשמקבלים אירוע lifecycle לגבי ההשעיה, או כשמשתמשים ב-method‏ subscriptions.get כדי לבדוק את כל השדות של המינוי.

בטבלה הבאה מוצגות שגיאות אפשריות במינוי, וגם הסבר איך לפתור את השגיאות האלה. אם לא מצליחים לפתור את הבעיה, אפשר למחוק את המינוי או לחכות עד שהוא יפוג. ‫Google Workspace Events API מוחק באופן אוטומטי מינויים שתוקפם פג.

שגיאה תיאור דרכים לפתרון הבעיה

USER_SCOPE_REVOKED

המשתמש שנתן את ההרשאה ביטל את ההרשאה לאחת או יותר מהיקפי ה-OAuth שנדרשים למינוי. מקבלים טוקן גישה אחר. פרטים נוספים זמינים במאמר בנושא קבלת אסימון גישה משרת ההרשאות של Google.

RESOURCE_DELETED

משאב היעד של המינוי נמחק. אם המשאב משוחזר, מבצעים קריאה ל-method‏ reactivate. אחרת, לא נדרשת פעולה, כי אי אפשר להפעיל מחדש מינוי בלי משאב היעד המקורי שלו.

USER_AUTHORIZATION_FAILURE

למשתמש שנתן את ההרשאה אין יותר גישה למשאב של המינוי. לא נדרשת כל פעולה. אי אפשר להפעיל מחדש את המינוי, כי למשתמש שאישר אותו אין גישה למשאב היעד.

ENDPOINT_PERMISSION_DENIED

לאפליקציית Google Workspace אין גישה למסירת אירועים לנקודת הקצה של ההתראות. נותנים גישה לחשבון השירות לאפליקציית Google Workspace שמעבירה אירועים.

חשבונות שירות:
  • אירועים ב-Google Chat: chat-api-push@system.gserviceaccount.com
  • אירועים ב-Google Drive: drive-api-event-push@system.gserviceaccount.com
  • אירועים ב-Google Meet: meet-api-event-push@system.gserviceaccount.com

בנושאי Pub/Sub, מקצים לחשבון השירות את התפקיד פרסום הודעות ב-Pub/Sub (roles/pubsub.publisher) ).

ENDPOINT_NOT_FOUND

נקודת הקצה של ההתראה לא קיימת או שלא ניתן למצוא אותה. בודקים שנקודת הקצה עדיין פעילה ועובדת. כדי לפתור בעיות בנושאים של Pub/Sub, אפשר לעיין במסמכי פתרון הבעיות.

ENDPOINT_RESOURCE_EXHAUSTED

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

APP_SCOPE_REVOKED

האדמין של הדומיין ביטל את ההרשאה של היקפי OAuth אחד או יותר לאפליקציית Chat. קבלת אישור מהאדמין.

APP_AUTHORIZATION_FAILURE

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

הפעלה מחדש של מינוי

אחרי שפותרים את השגיאה שגרמה להשעיית המינוי, משתמשים בשיטה reactivate כדי לאפשר למינוי לקבל שוב אירועים. השיטה בודקת שכל השגיאות נפתרו ומשנה את השדה state במינוי מ-SUSPENDED ל-ACTIVE.

כדי להפעיל מחדש מינוי ל-Google Workspace:

Apps Script

  1. בפרויקט Apps Script, יוצרים קובץ סקריפט חדש בשם reactivateSubscription ומוסיפים את הקוד הבא:

    function reactivateSubscription() {
      // The name of the subscription to reactivate.
      const name = 'subscriptions/SUBSCRIPTION_ID';
    
      // Call the Workspace Events API using the advanced service.
      const response = WorkspaceEvents.Subscriptions.reactivate({}, name);
      console.log(response);
    }
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SUBSCRIPTION_ID: מזהה המינוי. כדי לקבל את המזהה, אפשר להשתמש באחת מהאפשרויות הבאות:
      • הערך של השדה uid.
      • המזהה של שם המשאב שמיוצג בשדה name. לדוגמה, אם שם המשאב הוא subscriptions/subscription-123, משתמשים ב-subscription-123.
  2. כדי להפעיל מחדש את המינוי ל-Google Workspace, מריצים את הפונקציה reactivateSubscription בפרויקט Apps Script.

Python

  1. בספריית העבודה, יוצרים קובץ בשם reactivate_subscription.py ומוסיפים את הקוד הבא:

    """Reactivate subscription."""
    
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = [SCOPES]
    
    # Authenticate with Google Workspace and get user authentication.
    flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
    CREDENTIALS = flow.run_local_server()
    
    # Call the Workspace Events API using the service endpoint.
    service = build(
        'workspaceevents',
        'v1',
        credentials=CREDENTIALS,
    )
    
    NAME = 'subscriptions/SUBSCRIPTION_ID'
    response = service.subscriptions().reactivate(name=NAME).execute()
    print(response)
    

    מחליפים את מה שכתוב בשדות הבאים:

    • SCOPES: היקפי הרשאות של OAuth שתומכים בכל סוג אירוע של המינוי. הפורמט הוא מערך של מחרוזות. כדי לציין כמה היקפי הרשאות, מפרידים ביניהם באמצעות פסיקים. לדוגמה, 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: מזהה המינוי. כדי לקבל את המזהה, אפשר להשתמש באחת מהאפשרויות הבאות:
      • הערך של השדה uid.
      • המזהה של שם המשאב שמיוצג בשדה name. לדוגמה, אם שם המשאב הוא subscriptions/subscription-123, משתמשים ב-subscription-123.
  2. בספריית העבודה, מוודאים ששמרתם את פרטי הכניסה של מזהה לקוח OAuth ונתתם לקובץ את השם credentials.json. דוגמת הקוד משתמשת בקובץ ה-JSON הזה כדי לבצע אימות ב-Google Workspace ולקבל פרטי כניסה של משתמשים. הוראות מפורטות זמינות במאמר יצירת פרטי כניסה של מזהה לקוח OAuth.

  3. כדי להפעיל מחדש את המינוי ל-Google Workspace, מריצים את הפקודה הבאה במסוף:

    python3 reactivate_subscription.py
ממשק Google Workspace Events API מחזיר פעולה ממושכת שמכילה את המופע של משאב Subscription.

אם הבקשה נכשלת, אפשר לעיין בקטע הבא כדי לפתור שגיאות נוספות.

הפעלה מחדש של מינוי כאפליקציית Chat

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

  1. במקום אימות משתמש, מבצעים אימות כאפליקציית Chat באמצעות אישור חד-פעמי של האדמין.

  2. מציינים היקפי הרשאות שמאפשרים לאפליקציה ל-Chat להירשם לאירועים ב-Chat. היקפי ההרשאות האלה תמיד מתחילים ב-chat.app וכוללים את ההיקפים הבאים:

    • https://www.googleapis.com/auth/chat.app.memberships: הרשמה לאירועים של חברים במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.memberships.readonly: הרשמה לאירועים של חברים במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.messages.readonly: הרשמה לאירועים של הודעות ותגובות במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.spaces: הרשמה לאירועים במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.spaces.readonly: הרשמה לאירועים במרחב ב-Chat.

כתיבת סקריפט שקורא ל-Google Workspace Events API

בדוגמת הקוד הבאה מופעל מחדש מינוי ל-Google Workspace של אפליקציית Chat:

Python

  """Reactivate subscription."""

  from google.oauth2 import service_account
  from apiclient.discovery import build

  # Specify required scopes.
  SCOPES = [SCOPES]

  # Specify service account details.
  CREDENTIALS = (
      service_account.Credentials.from_service_account_file('credentials.json')
      .with_scopes(SCOPES)
  )

  # Call the Workspace Events API using the service endpoint.
  service = build(
      'workspaceevents',
      'v1beta',
      credentials=CREDENTIALS,
  )

  NAME = 'subscriptions/SUBSCRIPTION_ID'
  response = service.subscriptions().reactivate(name=NAME).execute()
  print(response)

מחליפים את מה שכתוב בשדות הבאים:

  • SCOPES: מציינים היקפי הרשאות שמאפשרים לאפליקציה ל-Chat להירשם לאירועים ב-Chat. היקפי ההרשאות האלה תמיד מתחילים ב-chat.app וכוללים את ההיקפים הבאים:

    • https://www.googleapis.com/auth/chat.app.memberships: הרשמה לאירועים של חברים במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.memberships.readonly: הרשמה לאירועים של חברים במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.messages.readonly: הרשמה לאירועים של הודעות ותגובות במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.spaces: הרשמה לאירועים במרחב ב-Chat.
    • https://www.googleapis.com/auth/chat.app.spaces.readonly: הרשמה לאירועים במרחב ב-Chat.
  • SUBSCRIPTION_ID: מזהה המינוי. כדי לקבל את המזהה, אפשר להשתמש באחת מהאפשרויות הבאות:

    • הערך של השדה uid.
    • המזהה של שם המשאב שמיוצג בשדה name. לדוגמה, אם שם המשאב הוא subscriptions/subscription-123, משתמשים ב-subscription-123.

פתרון בעיות במקרה של שגיאות מרובות

אם פתרתם את השגיאה שגרמה להשעיית המינוי והשיטה reactivate נכשלה, יכול להיות שקרתה שגיאה אחרת אחרי שהמינוי הושעה.

כדי לזהות שגיאות נוספות, בודקים את הפלט מהבקשה שנכשלה. הפלט מכיל את כל השגיאות שעדיין קיימות.

אם במינוי יש כמה שגיאות, הערך בשדה suspensionReason תמיד יהיה השגיאה המקורית שגרמה להשעיית המינוי.