حلّ الأخطاء وإعادة تفعيل اشتراك Google Workspace

توضّح هذه الصفحة كيفية إعادة تفعيل اشتراك معلّق في Google Workspace من خلال حلّ الأخطاء أو تحديد المشاكل فيها وحلّها واستخدام طريقة subscriptions.reactivate().

يتم تعليق اشتراكات Google Workspace عندما يمنع خطأ الاشتراك من تلقّي الأحداث. على سبيل المثال، يتم تعليق اشتراك إذا تعذّر العثور على المورد المستهدف أو نقطة نهاية الإشعار. بعد حلّ أي أخطاء متعلّقة بالاشتراك، يمكنك إعادة تفعيل الاشتراك لبدء تلقّي الأحداث مرة أخرى.

يمكنك التعرُّف على اشتراك معلّق من خلال الطرق التالية:

  • يتلقّى تطبيقك حدث دورة حياة بشأن التعليق. إذا تم تعليق اشتراكك بسبب خطأ في نقطة النهاية، قد لا تتلقّى حدث دورة حياة.
  • يمكنك استخدام الطريقتَين subscriptions.get() أو subscriptions.list() لمعرفة ما إذا تم ضبط حقل state للاشتراك على SUSPENDED أم لا.
  • يتم إعلامك بتعذُّر التسليم إلى نقطة نهاية الإشعارات. وللتعرّف على حالات تعذُّر تسليم الرسائل إلى مواضيع Google Cloud Pub/Sub، يمكنك الاطّلاع على مقالة التعامل مع حالات تعذُّر إرسال الرسائل.

تحتفظ الاشتراكات المُعاد تفعيلها بتاريخ انتهاء الصلاحية الأصلي. لتمديد فترة انتهاء صلاحية الاشتراك، راجِع المقالة تحديث اشتراك أو تجديده.

برمجة تطبيقات

  • مشروع "برمجة تطبيقات Google":
    • يمكنك استخدام مشروعك على Google Cloud بدلاً من المشروع التلقائي الذي يتم إنشاؤه تلقائيًا من خلال "برمجة التطبيقات".
    • بالنسبة إلى أي نطاقات أضفتها لإعداد شاشة طلب الموافقة المتعلّقة ببروتوكول OAuth، عليك أيضًا إضافة النطاقات إلى ملف appsscript.json في مشروع "برمجة تطبيقات Google". مثال:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • تفعيل خدمة Google Workspace Events المتقدّمة

Python

  • Python 3.6 أو أحدث
  • أداة إدارة الحزمة pip
  • أحدث مكتبات عملاء Google للغة Python. لتثبيتها أو تحديثها، شغِّل الأمر التالي في واجهة سطر الأوامر:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

تحديد الأخطاء وحلها

لتحديد الخطأ في أحد الاشتراكات، راجِع حقل suspensionReason الخاص بالاشتراك. يمكنك العثور على هذا الحقل عند تلقّي حدث دورة حياة حول التعليق، أو باستخدام طريقة subscriptions.get() لمراجعة جميع الحقول الخاصة بالاشتراك.

يعرض الجدول التالي الأخطاء المحتملة للاشتراك، وكيفية حلّ الأخطاء إذا أمكن. إذا لم تتمكن من حل الخطأ، يمكنك حذف الاشتراك أو الانتظار إلى أن تنتهي صلاحيته. تحذف Google Workspace Events API تلقائيًا الاشتراكات المنتهية الصلاحية

خطأ الوصف طرق حلّ المشكلة

USER_SCOPE_REVOKED

أبطل المستخدم المفوَّض منح نطاق أو أكثر من نطاقات OAuth اللازمة للاشتراك. يجب الحصول على رمز دخول آخر. لمعرفة التفاصيل، يُرجى الاطّلاع على المقالة الحصول على رمز دخول من خادم تفويض Google.

RESOURCE_DELETED

يتم حذف المورد الهدف للاشتراك. وإذا تمت استعادة المورد، عليك استدعاء الطريقة reactivate(). أمّا في حال عدم التأهّل لإرسال هذه الرسالة، فليس عليك اتّخاذ أي إجراء، إذ لا يمكنك إعادة تفعيل اشتراك بدون مورده الأصلي المستهدَف.

USER_AUTHORIZATION_FAILURE

لم يعد بإمكان المستخدم المفوَّض الوصول إلى مورد الاشتراك. ليس عليك اتّخاذ أي إجراء. لا يمكنك إعادة تفعيل الاشتراك، لأنّ المستخدم الذي فوَّضه لا يمكنه الوصول إلى المورد الهدف.

ENDPOINT_PERMISSION_DENIED

لا يملك تطبيق Google Workspace إذن الوصول لتسليم الأحداث إلى نقطة نهاية الإشعارات. امنح إذن الوصول إلى حساب الخدمة لتطبيق Google Workspace الذي يرسل الأحداث.

بالنسبة إلى أحداث Google Chat، يكون حساب الخدمة هو chat-api-push@system.gserviceaccount.com. بالنسبة إلى أحداث Google Meet، يكون حساب الخدمة meet-api-event-push@system.gserviceaccount.com.

بالنسبة إلى مواضيع النشر/الاشتراك، يجب منح دور ناشر النشر/الاشتراك (roles/pubsub.publisher) إلى حساب الخدمة).

ENDPOINT_NOT_FOUND

نقطة نهاية الإشعار غير موجودة أو لا يمكن العثور عليها. تحقَّق من أن نقطة النهاية لا تزال نشطة وتعمل. لتحديد مشاكل مواضيع النشر/الاشتراك وحلّها، راجِع مستندات تحديد المشاكل وحلّها.

ENDPOINT_RESOURCE_EXHAUSTED

تعذّر على نقطة نهاية الإشعار في تلقّي الأحداث بسبب عدم كفاية الحصة أو بلوغ الحد الأقصى للمعدل. اطلب زيادة الحصة.

إعادة تفعيل اشتراك

بعد حل الخطأ الذي أدى إلى تعليق اشتراكك، يمكنك استخدام طريقة reactivate() للسماح للاشتراك بتلقّي الأحداث مرة أخرى. تتحقّق الطريقة من حلّ جميع الأخطاء وتغيير حقل state للاشتراك من SUSPENDED إلى ACTIVE.

لإعادة تفعيل اشتراك Google Workspace، اتّبِع الخطوات التالية:

برمجة تطبيقات

  1. في مشروع برمجة التطبيقات، أنشئ ملف نص برمجي جديدًا باسم 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 في مشروع "برمجة تطبيقات Google".

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('client_secrets.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 وتسمية الملف client_secrets.json. يستخدم نموذج الرمز ملف JSON هذا للمصادقة باستخدام Google Workspace والحصول على بيانات اعتماد المستخدمين. لمعرفة التعليمات، يُرجى الاطّلاع على إنشاء بيانات اعتماد معرِّف عميل OAuth.

  3. لإعادة تفعيل اشتراك Google Workspace، يُرجى تشغيل ما يلي في الوحدة الطرفية:

    python3 reactivate_subscription.py
    
تعرض Google Workspace Events API عملية طويلة الأمد تحتوي على مثيل لمورد Subscription.

إذا فشل الطلب، فراجع القسم التالي لاستكشاف الأخطاء الإضافية وإصلاحها.

تحديد مشاكل متعددة وحلّها

إذا تم حلّ الخطأ الذي أدّى إلى تعليق الاشتراك وتعذّرت طريقة reactivate()، من المحتمل أن يكون قد حدث خطأ آخر بعد تعليق اشتراكك.

لتحديد الأخطاء الإضافية، راجِع نتيجة الطلب الذي تعذّر إكماله. يحتوي الناتج على أي أخطاء لا تزال موجودة.

إذا كانت هناك أخطاء متعددة في اشتراكك، تستخدم قيمة الحقل suspensionReason دائمًا الخطأ الأصلي الذي أدى إلى تعليق اشتراكك.