本页面介绍了如何通过解决或排查错误并调用 subscriptions.reactivate()
方法来重新激活已暂停的 Google Workspace 订阅。
如果错误阻止订阅接收事件,Google Workspace 订阅就会暂停。例如,找不到订阅的目标资源或通知端点时,系统会暂停订阅。解决订阅的所有错误后,您可以重新激活订阅,以重新开始接收事件。
您可以通过以下方式了解已暂停的订阅:
- 应用收到有关暂停的生命周期事件。如果您的订阅因端点错误而暂停,您可能不会收到生命周期事件。
- 您可以使用
subscriptions.get()
或subscriptions.list()
方法来查看订阅的state
字段是否已设置为SUSPENDED
。 - 系统会在通知端点递送失败时通知您。如需了解如何监控向 Google Cloud Pub/Sub 主题传送消息失败的情况,请参阅处理消息失败情况。
重新激活的订阅会保留原始到期日期。如需延长订阅的到期时间,请参阅更新或续订订阅。
Apps 脚本
- Google Workspace 订阅。如需创建订阅,请参阅创建订阅。
需要在一个或多个支持订阅的所有事件类型的范围上进行用户身份验证。
- Apps 脚本项目:
- 使用您的 Google Cloud 项目,而不是 Apps 脚本自动创建的项目。
- 对于您为配置 OAuth 权限请求页面而添加的任何范围,您还必须将这些范围添加到 Apps 脚本项目的
appsscript.json
文件中。例如:
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.readonly" ]
- 启用
Google Workspace Events
高级服务。
Python
- Python 3.6 或更高版本
- pip 软件包管理工具
- 适用于 Python 的最新 Google 客户端库。如需安装或更新它们,请在命令行界面中运行以下命令:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Google Workspace 订阅。如需创建订阅,请参阅创建订阅。
需要在一个或多个支持订阅的所有事件类型的范围上进行用户身份验证。
找出并解决错误
如需找出订阅存在的错误,请查看相应订阅的 suspensionReason
字段。您可以在收到有关暂停的生命周期事件或使用 subscriptions.get()
方法查看订阅的所有字段时找到此字段。
下表显示了订阅可能出现的错误,并尽可能介绍了如何解决这些错误。如果您无法解决该错误,可以删除订阅,或等待订阅过期。Google Workspace Events API 会自动删除已过期的订阅。
错误 | 说明 | 解决方法 |
---|---|---|
|
授权用户已撤消对订阅所需的一个或多个 OAuth 范围的授权。 | 获取另一个访问令牌。如需了解详情,请参阅 从 Google 授权服务器获取访问令牌。 |
|
删除该订阅的目标资源。 | 如果恢复了资源,请调用 reactivate() 方法。否则,无需执行任何操作,因为如果没有原始目标资源,您将无法重新激活订阅。 |
|
授权用户将无法再访问订阅的资源。 | 您无需执行任何操作,您无法重新激活订阅,因为向其授权的用户无法访问目标资源。 |
|
Google Workspace 应用无权将事件传递到您的通知端点。 | 向传送事件的 Google Workspace 应用的服务帐号授予访问权限。 对于 Google Chat 事件,服务帐号为 chat-api-push@system.gserviceaccount.com 。对于 Google Meet 活动,服务帐号为 meet-api-event-push@system.gserviceaccount.com 。对于 Pub/Sub 主题,向服务帐号授予 Pub/Sub Publisher 角色( roles/pubsub.publisher)
。 |
|
通知端点不存在或找不到。 | 检查端点是否仍处于活跃状态且可正常运行。如需对 Pub/Sub 主题进行问题排查,请参阅问题排查文档。 |
|
由于配额不足或达到速率限制,通知端点无法接收事件。 | 申请增加配额。 |
重新激活订阅
解决导致订阅暂停的错误后,您可以使用 reactivate()
方法让订阅再次接收事件。该方法会检查所有错误是否已解决,并将订阅的 state
字段从 SUSPENDED
更改为 ACTIVE
。
如需重新激活 Google Workspace 订阅,请执行以下操作:
Apps 脚本
在 Apps 脚本项目中,新建一个名为
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 脚本项目中运行
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('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
:订阅的 ID。如需获取 ID,您可以使用以下任一方法:
在工作目录中,确保您已存储 OAuth 客户端 ID 凭据并将文件命名为
client_secrets.json
。此代码示例使用此 JSON 文件进行 Google Workspace 身份验证并获取用户凭据。有关说明,请参阅创建 OAuth 客户端 ID 凭据。如需重新激活 Google Workspace 订阅,请在终端中运行以下命令:
python3 reactivate_subscription.py
Subscription
资源的实例。
如果请求失败,请参阅以下部分以排查其他错误。
排查多个错误
如果您解决了导致订阅暂停的错误,而 reactivate()
方法失败了,那么订阅暂停后可能会发生其他错误。
如需找出其他错误,请查看失败请求的输出。输出中包含仍然存在的所有错误。
如果您的订阅存在多个错误,suspensionReason
字段的值将始终使用导致订阅暂停的原始错误。