【问题标题】:Migrating from Google Global HTTP Batch to API specific Batch endpoint, requests aren't executed but no errors thrown从 Google Global HTTP Batch 迁移到 API 特定的 Batch 端点,请求未执行但未引发错误
【发布时间】:2020-01-25 20:18:16
【问题描述】:

我在从 Google Global HTTP Batch 迁移到 Google Directory API 的 API 特定 Batch 端点时遇到了麻烦(在我的例子中是为了管理 google 邮件组)。

Google 在其博客文章中提供的说明简短明了:

PHP 支持的最低 Google 客户端库版本为 0.86。消费者 步骤 更新到 0.86 或更高版本 对于全局批处理,确认 您的代码没有明确指定全局批处理路径(即 “/batch”在路径的末尾)。如果是,请将其更改为引用 api/version 特定路径(例如“/batch/library/v1”)。

我使用最新版本的 PHP 的 Google Client API 包。 要发出一批请求,需要使用 Google_Http_Batch 类。 构造函数采用您的 api 客户端实例和三个可选参数,最后一个参数是 batchPath。默认为“批处理”。

看起来很简单,我更改了代码并使用 Google Directory API v1 的批处理路径调用构造函数:

//create a batch
$batch = new Google_Http_Batch($this->google_client, false, null, 'batch/directory/v1');

批处理请求不会引发任何错误,但不会执行放入批处理的请求。 如果我将批处理路径更改回'batch',则会执行请求。 如果我将批处理路径更改为任意路径,我会从 Google 收到 400 Not found 错误。

所以看起来新路径是正确的,但是由于某种原因请求没有被执行。

有人遇到同样的麻烦或知道我做错了什么吗? (在我开始向谷歌报告错误之前)

干杯!

【问题讨论】:

  • 您提到了 google 邮件组和 google directory api。此更改删除了全局端点,要求您将批处理请求定向到特定的 api 端点。有人想知道您是否通过连接到一个 API 并为另一个 API 发出请求而造成不匹配。例如:连接到目录 api,然后发出 gmail api 请求。类似的东西?
  • 并非如此。目录 API (developers.google.com/admin-sdk/directory/v1/reference) 用于管理 google(邮件)组..

标签: google-api google-admin-sdk


【解决方案1】:

我有同样的问题,我解决了。

你至少需要这个 api 版本: https://github.com/googleapis/google-api-php-client/releases/tag/v2.1.3

你必须使用这个批处理路径'batch/admin/directory_v1'而不是'batch/directory/v1'


在以前的版本中,批处理路径被硬编码在 Google_Http_Batch 类中:

  const BATCH_PATH = 'batch';

所以如果你想改变这个值,你必须改变这个类中的常量

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-06
    • 2019-06-09
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多