Atasi error dan aktifkan kembali langganan Google Workspace

Halaman ini menjelaskan cara mengaktifkan kembali langganan Google Workspace yang ditangguhkan dengan menyelesaikan atau memecahkan masalah error dan memanggil metode subscriptions.reactivate().

Langganan Google Workspace ditangguhkan setiap kali error mencegah langganan menerima peristiwa. Misalnya, langganan ditangguhkan saat resource target atau endpoint notifikasinya tidak dapat ditemukan. Setelah menyelesaikan error pada langganan, Anda dapat mengaktifkan kembali langganan untuk mulai menerima peristiwa lagi.

Anda dapat mempelajari langganan yang ditangguhkan dengan cara berikut:

  • Aplikasi Anda menerima peristiwa siklus proses tentang penangguhan. Jika langganan ditangguhkan karena error pada endpoint-nya, Anda mungkin tidak menerima peristiwa siklus proses.
  • Anda menggunakan metode subscriptions.get() atau subscriptions.list() untuk melihat apakah kolom state langganan ditetapkan ke SUSPENDED.
  • Anda akan menerima notifikasi tentang kegagalan pengiriman ke endpoint notifikasi. Untuk mempelajari cara memantau kegagalan pengiriman ke topik Google Cloud Pub/Sub, lihat Menangani kegagalan pesan.

Langganan yang diaktifkan kembali akan mempertahankan tanggal habis masa berlaku yang asli. Untuk memperpanjang waktu habis masa berlaku langganan, lihat Memperbarui atau memperpanjang langganan.

Apps Script

  • Project Apps Script:
    • Gunakan project Google Cloud Anda, bukan project default yang dibuat secara otomatis oleh Apps Script.
    • Untuk cakupan yang Anda tambahkan guna mengonfigurasi layar izin OAuth, Anda juga harus menambahkan cakupan ke file appsscript.json di project Apps Script. Contoh:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages.readonly"
      ]
          
    • Aktifkan layanan lanjutan Google Workspace Events.

Python

  • Python 3.6 atau yang lebih tinggi
  • Alat pengelolaan paket pip
  • Library klien Google terbaru untuk Python. Untuk menginstal atau mengupdatenya, jalankan perintah berikut di antarmuka command line:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      

Mengidentifikasi dan menyelesaikan error

Untuk mengidentifikasi error langganan, tinjau kolom suspensionReason langganan. Anda dapat menemukan kolom ini saat menerima peristiwa siklus proses tentang penangguhan, atau dengan menggunakan metode subscriptions.get() untuk meninjau semua kolom untuk langganan.

Tabel berikut menampilkan kemungkinan error untuk langganan dan, jika memungkinkan, cara mengatasi error tersebut. Jika tidak dapat menyelesaikan error, Anda dapat menghapus langganan, atau menunggu hingga langganan berakhir. Google Workspace Events API menghapus langganan yang sudah tidak berlaku secara otomatis.

Error Deskripsi Cara menyelesaikan

USER_SCOPE_REVOKED

Pengguna yang memberikan otorisasi telah mencabut pemberian satu atau beberapa cakupan OAuth yang diperlukan untuk langganan. Dapatkan token akses lain. Untuk mengetahui detailnya, lihat Mendapatkan token akses dari Server Otorisasi Google.

RESOURCE_DELETED

Resource target untuk langganan dihapus. Jika resource dipulihkan, panggil metode reactivate(). Jika tidak, Anda tidak perlu melakukan tindakan apa pun karena Anda tidak dapat mengaktifkan kembali langganan tanpa resource target aslinya.

USER_AUTHORIZATION_FAILURE

Pengguna yang memberikan otorisasi tidak lagi memiliki akses ke resource untuk langganan. Tidak diperlukan tindakan. Anda tidak dapat mengaktifkan kembali langganan, karena pengguna yang memberikan otorisasi tidak dapat mengakses resource target.

ENDPOINT_PERMISSION_DENIED

Aplikasi Google Workspace tidak memiliki akses untuk mengirimkan peristiwa ke endpoint notifikasi Anda. Berikan akses ke akun layanan untuk aplikasi Google Workspace yang mengirimkan peristiwa.

Untuk peristiwa Google Chat, akun layanannya adalah chat-api-push@system.gserviceaccount.com. Untuk peristiwa Google Meet, akun layanannya adalah meet-api-event-push@system.gserviceaccount.com.

Untuk topik Pub/Sub, berikan peran Pub/Sub Publisher (roles/pubsub.publisher) ke akun layanan.

ENDPOINT_NOT_FOUND

Endpoint notifikasi tidak ada atau tidak dapat ditemukan. Pastikan endpoint masih aktif dan berfungsi. Untuk memecahkan masalah topik Pub/Sub, lihat Dokumentasi pemecahan masalah.

ENDPOINT_RESOURCE_EXHAUSTED

Endpoint notifikasi gagal menerima peristiwa karena kuota tidak memadai atau mencapai pembatasan kapasitas. Meminta penambahan kuota.

Mengaktifkan kembali langganan

Setelah menyelesaikan error yang menangguhkan langganan, Anda dapat menggunakan metode reactivate() untuk mengizinkan langganan menerima peristiwa lagi. Metode ini memeriksa apakah semua error telah di-resolve dan mengubah kolom state langganan Anda dari SUSPENDED menjadi ACTIVE.

Untuk mengaktifkan kembali langganan Google Workspace:

Apps Script

  1. Di project Apps Script, buat file skrip baru bernama reactivateSubscription dan tambahkan kode berikut:

    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);
    }
    

    Ganti kode berikut:

    • SUBSCRIPTION_ID: ID langganan. Untuk mendapatkan ID, Anda dapat menggunakan salah satu opsi berikut:
      • Nilai kolom uid.
      • ID nama resource yang direpresentasikan di kolom name. Misalnya, jika nama resource adalah subscriptions/subscription-123, gunakan subscription-123.
  2. Untuk mengaktifkan kembali langganan Google Workspace, jalankan fungsi reactivateSubscription di project Apps Script Anda.

Python

  1. Di direktori kerja Anda, buat file bernama reactivate_subscription.py dan tambahkan kode berikut:

    """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)
    

    Ganti kode berikut:

    • SCOPES: Satu atau beberapa cakupan OAuth yang mendukung setiap jenis peristiwa untuk langganan. Diformat sebagai array string. Untuk mencantumkan beberapa cakupan, pisahkan dengan koma. Misalnya, 'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.
    • SUBSCRIPTION_ID: ID langganan. Untuk mendapatkan ID, Anda dapat menggunakan salah satu opsi berikut:
      • Nilai kolom uid.
      • ID nama resource yang direpresentasikan di kolom name. Misalnya, jika nama resource adalah subscriptions/subscription-123, gunakan subscription-123.
  2. Di direktori kerja, pastikan Anda telah menyimpan kredensial client ID OAuth dan memberi nama file client_secrets.json. Contoh kode menggunakan file JSON ini untuk mengautentikasi dengan Google Workspace dan mendapatkan kredensial pengguna. Untuk mengetahui petunjuknya, lihat Membuat kredensial client ID OAuth.

  3. Untuk mengaktifkan kembali langganan Google Workspace, jalankan perintah berikut di terminal Anda:

    python3 reactivate_subscription.py
Google Workspace Events API menampilkan operasi yang berjalan lama yang berisi instance resource Subscription.

Jika permintaan gagal, lihat bagian berikut untuk memecahkan masalah error tambahan.

Memecahkan masalah beberapa error

Jika Anda telah menyelesaikan error yang menangguhkan langganan dan metode reactivate() gagal, error lain mungkin terjadi setelah langganan Anda ditangguhkan.

Untuk mengidentifikasi error tambahan, tinjau output dari permintaan yang gagal. Output berisi error yang masih ada.

Jika langganan Anda memiliki beberapa error, nilai untuk kolom suspensionReason selalu menggunakan error asli yang menangguhkan langganan Anda.