このページでは、エラーを解決またはトラブルシューティングして
subscriptions.reactivate
メソッドを呼び出すことで、停止した Google Workspace
サブスクリプションを再有効化する方法について説明します。
Google Workspace サブスクリプションは、エラーによってサブスクリプションがイベントを受信できなくなると停止します。たとえば、ターゲット リソースまたは通知エンドポイントが見つからない場合、サブスクリプションは停止します。サブスクリプションのエラーを解決したら、サブスクリプションを再有効化してイベントの受信を再開できます。
停止したサブスクリプションについては、次の方法で確認できます。
- アプリが停止に関する ライフサイクル イベントを受信します。エンドポイントのエラーが原因でサブスクリプションが停止した場合、ライフサイクル イベントを受信できないことがあります。
subscriptions.getメソッドまたはsubscriptions.listメソッドを使用して、サブスクリプションのstateフィールドがSUSPENDEDに設定されているかどうかを確認します。- 通知エンドポイントへの配信失敗が通知されます。Google Cloud Pub/Sub トピックへの配信失敗のモニタリングについては、 メッセージ エラーの処理をご覧ください。
再有効化されたサブスクリプションの有効期限は元のままです。サブスクリプションの有効期限を延長するには、 Google Workspace サブスクリプションを更新または更新するをご覧ください。
Apps Script
- Google Workspace サブスクリプション。作成するには、 定期購入の作成をご覧ください。
- Apps Script プロジェクト:
- Apps Script によって自動的に作成されるデフォルトのプロジェクトではなく、Google Cloud プロジェクトを使用します。
- OAuth 同意画面を構成するために追加したすべてのスコープについて、Apps Script プロジェクトの
appsscript.jsonファイルにもスコープを追加する必要があります。たとえば、chat.messagesスコープを指定した場合は、次のように追加します。 - 有効にする
Google Workspace Events高度なサービス。
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
サブスクリプションの各イベントタイプに認証と適切な認可スコープが必要です。
- ユーザー認証の場合、サブスクリプションの少なくとも 1 つのイベントタイプをサポートする 1 つ以上のスコープが必要です。スコープを特定するには、イベントタイプ別のスコープをご覧ください。
- Chat アプリとして Chat イベントをサブスクライブするには、管理者の 1 回限りの承認によるアプリ認証が必要です。
Python
- Python 3.6 以降
- pip パッケージ管理ツール
- Python 用の最新の Google クライアント ライブラリ。インストールまたは更新するには、コマンドライン インターフェースで次の
コマンドを実行します。
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Google Workspace サブスクリプション。作成するには、 定期購入の作成をご覧ください。
サブスクリプションの各イベントタイプに認証と適切な認可スコープが必要です。
- ユーザー認証の場合、サブスクリプションの少なくとも 1 つのイベントタイプをサポートする 1 つ以上のスコープが必要です。スコープを特定するには、イベントタイプ別のスコープをご覧ください。
- Chat アプリとして Chat イベントをサブスクライブするには、管理者の 1 回限りの承認によるアプリ認証が必要です。
エラーを特定して解決する
サブスクリプションのエラーを特定するには、サブスクリプションの suspensionReason フィールドを確認します。このフィールドは、停止に関するライフサイクル
イベントを受信したとき、または
subscriptions.get メソッドを使用してサブスクリプションのすべてのフィールドを確認するときに確認できます。
次の表に、サブスクリプションで発生する可能性のあるエラーと、可能な場合はエラーの解決方法を示します。エラーを解決できない場合は、サブスクリプションを 削除するか、有効期限が切れるまで 待ちます。Google Workspace Events API は、有効期限切れのサブスクリプションを自動的に削除します。
| エラー | 説明 | 解決方法 |
|---|---|---|
|
認可ユーザーが、サブスクリプションに必要な 1 つ以上の OAuth スコープの権限を取り消しました。 | 別のアクセス トークンを取得します。詳細については、 Google 認可サーバーからアクセス トークンを取得するをご覧ください。 |
|
サブスクリプションのターゲット リソースが削除されました。 | リソースが復元された場合は、reactivate
メソッドを呼び出します。それ以外の場合は、元のターゲット リソースがないとサブスクリプションを再有効化できないため、対応は不要です。 |
|
認可ユーザーが、サブスクリプションのリソースにアクセスできなくなりました。 | 対応は不要です。認可したユーザーがターゲット リソースにアクセスできないため、サブスクリプションを再有効化できません。 |
|
Google Workspace アプリケーションに、 通知エンドポイントにイベントを配信する権限がありません。 | イベントを配信する Google Workspace アプリケーションのサービス アカウントにアクセス権を付与します。 Service accounts:
Pub/Sub トピックの場合は、Pub/Sub パブリッシャーのロール( roles/pubsub.publisher)
)をサービス アカウントに付与します。 |
|
通知エンドポイントが存在しないか、見つかりません。 | エンドポイントがアクティブで動作していることを確認します。Pub/Sub トピックのトラブルシューティングについては、トラブルシューティング ドキュメントをご覧ください。 |
|
割り当てが不足しているか、レート制限に達したため、通知エンドポイントがイベントを受信できませんでした。 | 割り当ての増加をリクエストしてください。 |
|
ドメイン管理者が、Chat アプリの 1 つ以上の OAuth スコープの権限を取り消しました。 | 管理者の承認を得ます。 |
|
サブスクリプションの作成を認可した Chat アプリが、サブスクリプションのターゲット リソースにアクセスできなくなりました。 | ターゲット リソースへのアクセス権を回復します。たとえば、ターゲット リソースが Chat スペースの場合、Chat アプリがスペースのメンバーである必要があります。 |
サブスクリプションを再有効化する
サブスクリプションを停止したエラーを解決したら、reactivate メソッドを使用して、サブスクリプションがイベントを受信できるようにします。このメソッドは、すべてのエラーが解決されていることを確認し、サブスクリプションの state フィールドを SUSPENDED から ACTIVE に変更します。
Google Workspace サブスクリプションを再有効化するには:
Apps Script
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); }次のように置き換えます。
Google Workspace サブスクリプションを再有効化するには、Apps Script プロジェクトで関数
reactivateSubscriptionを実行します。
Python
作業ディレクトリに
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: サブスクリプションの各イベントタイプをサポートする 1 つ以上の OAuth スコープ 。文字列の配列としてフォーマットされます。複数のスコープを一覧表示するには、カンマで区切ります。 例:'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'SUBSCRIPTION_ID: サブスクリプションの ID。ID を取得するには、次のいずれかを使用します。
作業ディレクトリに OAuth クライアント ID 認証情報を保存し、ファイルに
credentials.jsonという名前を付けていることを確認します。このコードサンプルでは、この JSON ファイルを使用して Google Workspace で認証し、ユーザー認証情報を取得します。手順については、 OAuth クライアント ID 認証情報を作成するをご覧ください。Google Workspace サブスクリプションを再有効化するには、ターミナルで次のコマンドを実行します。
python3 reactivate_subscription.py
Subscription リソースのインスタンスが含まれます。
リクエストが失敗した場合は、次のセクションで追加のエラーのトラブルシューティングを行ってください。
Chat アプリとしてサブスクリプションを再有効化する
ユーザーとしてではなく、Chat アプリとして Chat イベントのサブスクリプションを再有効化できます。プロセスは似ていますが、次の点が異なります。
ユーザー認証ではなく、 管理者の 1 回限りの承認で Chat アプリとして認証します。
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 を呼び出すスクリプトを作成する
次のコードサンプルでは、Chat アプリの Google Workspace サブスクリプションを再有効化します。
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: サブスクリプションの ID。ID を取得するには、次のいずれかを使用します。
複数のエラーのトラブルシューティング
サブスクリプションを停止したエラーを解決しても reactivate メソッドが失敗する場合は、サブスクリプションが停止した後に別のエラーが発生した可能性があります。
追加のエラーを特定するには、失敗したリクエストの出力を確認します。出力には、まだ存在するエラーが含まれています。
サブスクリプションに複数のエラーがある場合、suspensionReason フィールドの値には、サブスクリプションを停止した元のエラーが常に使用されます。