خطاها را برطرف کنید و اشتراک Google Workspace را دوباره فعال کنید

این صفحه نحوه فعال‌سازی مجدد اشتراک معلق‌شده Google Workspace را با حل یا عیب‌یابی خطاها و فراخوانی متد subscriptions.reactivate توضیح می‌دهد.

اشتراک‌های Google Workspace هر زمان که خطایی مانع از دریافت رویدادها توسط اشتراک شود، به حالت تعلیق در می‌آیند. برای مثال، یک اشتراک زمانی به حالت تعلیق در می‌آید که منبع هدف یا نقطه پایانی اعلان آن پیدا نشود. پس از رفع هرگونه خطای مربوط به اشتراک، می‌توانید اشتراک را دوباره فعال کنید تا دوباره شروع به دریافت رویدادها کنید.

از روش‌های زیر درباره اشتراک معلق‌شده اطلاعات کسب کنید:

  • برنامه شما یک رویداد چرخه حیات در مورد تعلیق دریافت می‌کند. اگر اشتراک شما به دلیل خطایی در نقطه پایانی آن به حالت تعلیق درآمده باشد، ممکن است رویداد چرخه حیات را دریافت نکنید.
  • برای بررسی اینکه آیا فیلد state اشتراک روی SUSPENDED تنظیم شده است یا خیر، از متدهای subscriptions.get یا subscriptions.list استفاده کنید.
  • شما از عدم موفقیت در تحویل به نقطه پایانی اعلان خود مطلع شده‌اید. برای کسب اطلاعات بیشتر در مورد نظارت بر عدم موفقیت در تحویل به مباحث Google Cloud Pub/Sub، به بخش مدیریت شکست‌های پیام مراجعه کنید.

اشتراک‌های دوباره فعال‌شده، تاریخ انقضای اصلی را حفظ می‌کنند. برای تمدید زمان انقضای اشتراک، به به‌روزرسانی یا تمدید اشتراک Google Workspace مراجعه کنید.

اسکریپت برنامه‌ها

  • یک پروژه اسکریپت برنامه‌ها:
    • به جای پروژه پیش‌فرضی که به طور خودکار توسط Apps Script ایجاد شده است، از پروژه Google Cloud خود استفاده کنید.
    • برای تمام محدوده‌هایی که برای پیکربندی صفحه رضایت OAuth اضافه کرده‌اید، باید محدوده‌ها را به فایل appsscript.json در پروژه Apps Script خود نیز اضافه کنید. برای مثال، اگر محدوده chat.messages را مشخص کرده‌اید، موارد زیر را اضافه کنید:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • سرویس پیشرفته Google Workspace Events را فعال کنید .

پایتون

  • پایتون ۳.۶ یا بالاتر
  • ابزار مدیریت بسته pip
  • جدیدترین کتابخانه‌های کلاینت گوگل برای پایتون. برای نصب یا به‌روزرسانی آنها، دستور زیر را در رابط خط فرمان خود اجرا کنید:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

شناسایی و رفع خطاها

برای شناسایی خطای مربوط به یک اشتراک، فیلد suspensionReason مربوط به اشتراک را بررسی کنید. می‌توانید این فیلد را هنگام دریافت یک رویداد چرخه عمر در مورد تعلیق ، یا با استفاده از متد subscriptions.get برای بررسی تمام فیلدهای مربوط به اشتراک، پیدا کنید.

جدول زیر خطاهای احتمالی مربوط به یک اشتراک و در صورت امکان، نحوه رفع خطاها را نشان می‌دهد. اگر نمی‌توانید خطا را برطرف کنید، می‌توانید اشتراک را حذف کنید یا منتظر بمانید تا منقضی شود. API رویدادهای Google Workspace اشتراک‌های منقضی شده را به طور خودکار حذف می‌کند.

خطا توضیحات راه‌های حل و فصل

USER_SCOPE_REVOKED

کاربر مجاز، اعطای یک یا چند محدوده OAuth مورد نیاز برای اشتراک را لغو کرده است. Obtain another access token. For details, see Obtain an access token from the Google Authorization Server .

RESOURCE_DELETED

منبع هدف برای اشتراک حذف شده است. اگر منبع بازیابی شده باشد، متد reactivate را فراخوانی کنید. در غیر این صورت، هیچ اقدامی لازم نیست، زیرا نمی‌توانید اشتراک را بدون منبع هدف اصلی آن دوباره فعال کنید.

USER_AUTHORIZATION_FAILURE

کاربر مجاز دیگر به منبع مربوط به اشتراک دسترسی ندارد. هیچ اقدامی لازم نیست. شما نمی‌توانید اشتراک را دوباره فعال کنید، زیرا کاربری که آن را مجاز کرده است نمی‌تواند به منبع هدف دسترسی پیدا کند.

ENDPOINT_PERMISSION_DENIED

برنامه Google Workspace دسترسی لازم برای ارسال رویدادها به نقطه پایانی اعلان شما را ندارد. به حساب سرویس برنامه Google Workspace که رویدادها را ارائه می‌دهد، دسترسی بدهید.

حساب‌های خدماتی:
  • رویدادهای گوگل چت : chat-api-push@system.gserviceaccount.com
  • رویدادهای گوگل درایو : drive-api-event-push@system.gserviceaccount.com
  • رویدادهای گوگل میت : meet-api-event-push@system.gserviceaccount.com

For Pub/Sub topics, grant the role of Pub/Sub Publisher ( roles/pubsub.publisher) to the service account.

ENDPOINT_NOT_FOUND

نقطه پایانی اعلان وجود ندارد یا نمی‌توان آن را پیدا کرد. بررسی کنید که نقطه پایانی هنوز فعال و در حال کار باشد. برای عیب‌یابی موضوعات Pub/Sub، به مستندات عیب‌یابی مراجعه کنید.

ENDPOINT_RESOURCE_EXHAUSTED

به دلیل سهمیه ناکافی یا رسیدن به محدودیت سرعت، نقطه پایانی اعلان نتوانست رویدادها را دریافت کند. درخواست افزایش سهمیه.

APP_SCOPE_REVOKED

مدیر دامنه، اعطای یک یا چند محدوده OAuth را برای برنامه چت لغو کرده است. دریافت تاییدیه مدیر .

APP_AUTHORIZATION_FAILURE

برنامه‌ی چتی که ایجاد اشتراک را مجاز کرده بود، دیگر به منبع هدف اشتراک دسترسی ندارد. دسترسی مجدد به منبع هدف. برای مثال، اگر منبع هدف یک فضای چت باشد، ممکن است برنامه چت به عضویت در آن فضا نیاز داشته باشد.

فعال‌سازی مجدد اشتراک

پس از اینکه خطایی که اشتراک شما را به حالت تعلیق درآورده بود برطرف کردید، از متد reactivate برای دریافت مجدد رویدادها توسط اشتراک استفاده کنید. این متد بررسی می‌کند که آیا همه خطاها برطرف شده‌اند یا خیر و فیلد state اشتراک شما را از SUSPENDED به ACTIVE تغییر می‌دهد.

برای فعال‌سازی مجدد اشتراک Google Workspace:

اسکریپت برنامه‌ها

  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 خود اجرا کنید.

پایتون

  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 و دریافت اعتبارنامه‌های کاربر استفاده می‌کند. برای دستورالعمل‌ها، به Create OAuth client ID credentials مراجعه کنید.

  3. برای فعال‌سازی مجدد اشتراک Google Workspace، دستور زیر را در ترمینال خود اجرا کنید:

    python3 reactivate_subscription.py
رابط برنامه‌نویسی کاربردی رویدادهای فضای کاری گوگل (Google Workspace Events API) یک عملیات طولانی‌مدت را برمی‌گرداند که شامل نمونه‌ای از منبع Subscription است.

اگر درخواست ناموفق بود، برای عیب‌یابی خطاهای اضافی به بخش زیر مراجعه کنید.

فعال‌سازی مجدد اشتراک به عنوان یک برنامه چت

شما می‌توانید اشتراک در رویدادهای چت را به عنوان یک برنامه چت به جای یک کاربر دوباره فعال کنید. روند کار مشابه است، با این تفاوت که:

  1. به جای احراز هویت کاربر، به عنوان یک برنامه چت با تأیید یکباره مدیر، احراز هویت کنید .

  2. محدوده‌های مجوزدهی را مشخص کنید که به برنامه چت اجازه می‌دهد در رویدادهای چت مشترک شود. این محدوده‌های مجوزدهی همیشه با chat.app شروع می‌شوند و شامل موارد زیر هستند:

    • https://www.googleapis.com/auth/chat.app.memberships : در رویدادهای اعضای فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.memberships.readonly : در رویدادهای اعضای فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.messages.readonly : در رویدادهای پیام و واکنش فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.spaces : در رویدادهای فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.spaces.readonly : در رویدادهای فضای چت مشترک شوید.

اسکریپتی بنویسید که API رویدادهای Google Workspace را فراخوانی کند

نمونه کد زیر اشتراک Google Workspace یک برنامه چت را دوباره فعال می‌کند:

پایتون

  """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.app شروع می‌شوند و شامل موارد زیر هستند:

    • https://www.googleapis.com/auth/chat.app.memberships : در رویدادهای اعضای فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.memberships.readonly : در رویدادهای اعضای فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.messages.readonly : در رویدادهای پیام و واکنش فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.spaces : در رویدادهای فضای چت مشترک شوید.
    • https://www.googleapis.com/auth/chat.app.spaces.readonly : در رویدادهای فضای چت مشترک شوید.
  • SUBSCRIPTION_ID : شناسه اشتراک. برای دریافت شناسه، می‌توانید از هر یک از موارد زیر استفاده کنید:

    • مقدار فیلد uid .
    • شناسه‌ی نام منبع که در فیلد name نمایش داده می‌شود. برای مثال، اگر نام منبع subscriptions/subscription-123 است، subscription-123 استفاده کنید.

عیب یابی خطاهای متعدد

اگر خطایی که اشتراک را به حالت تعلیق درآورده بود برطرف کردید و روش reactivate با شکست مواجه شد، ممکن است خطای دیگری پس از تعلیق اشتراک شما رخ داده باشد.

برای شناسایی خطاهای بیشتر، خروجی درخواست ناموفق را بررسی کنید. خروجی شامل هرگونه خطایی است که هنوز وجود دارد.

وقتی اشتراک شما چندین خطا داشته باشد، مقدار فیلد suspensionReason همیشه از خطای اصلی که اشتراک شما را به حالت تعلیق درآورده است، استفاده می‌کند.