"Missing resource" 通过 googleapis/google-api-php-client 创建新的 offerClass 时返回错误

"Missing resource" error returned when creating new offerClass via googleapis/google-api-php-client

更新:我现在差不多想出了如何做到这一点。我正在构建一个库来清理流程,一旦它处于 Github.

开始维护的状态,我就会 link 它在这里

对于这样一个基本问题深表歉意,但是我完全被困住了,我似乎找不到任何可以提供帮助的文档。我将在下面列出我正在阅读的文档。

问题:我正在关注 this guide,它告诉我向 https://walletobjects.googleapis.com/walletobjects/v1/loyaltyClass 发出 POST 请求,以便为我的传递对象定义一个新的 class延长。就我而言,我实际上使用的是 offerClass (https://walletobjects.googleapis.com/walletobjects/v1/offerClass),但我也尝试过其他端点。

但是,返回的响应总是如下:

{
  "error": {
    "code": 400,
    "message": "Missing resource.",
    "errors": [
      {
        "message": "Missing resource.",
        "domain": "walletobjects",
        "reason": "invalidResource"
      }
    ]
  }
}

我这辈子都想不通为什么。我一定是遗漏了一些基本的东西。

我碰巧也发现了 this documentation that states "The request body contains an instance of OfferClass." referenced here -- 令人困惑的部分是库中没有我可以实例化的 OfferClass,互联网上也没有任何迹象。所以我用一个简单的数组自己模拟了一个,只是为了看看是否发生了什么,但没有。

我做错了什么?为什么我无法向此端点发出成功的 POST 请求?我 能够成功地向 API 发出授权请求,但我只是没有得到想要的响应。我的代码在下面,其中注释是一个 Laravel 控制台命令,但它离 vanilla PHP:

不远
public function handle(): void
{
    /** @var \Google\Client $this->client (for SO's benefit) */
    $this->client->setApplicationName('App name removed');

    $this->client->setScopes(
        [
            'https://www.googleapis.com/auth/wallet_object.issuer',
        ]
    );

    $credentialsPath = __DIR__ . '/service-accounts-credentials-8d8d4123ea65.json';

    $this->client->setAuthConfig($credentialsPath);

    $response = $this->client->authorize()->post('https://walletobjects.googleapis.com/walletobjects/v1/offerClass', [
        'form_params' => [
           $this->getOfferClass(), // returns the simple array mockup of OfferClass
        ]
    ]);

    dd($response->getBody()->getContents());
}

如有任何帮助,我们将不胜感激。我真的坚持这个。

更新:我现在发现 this repo 中有一些示例,但我现在收到“无效资源 ID”错误。我在任何文档中都找不到资源 ID 应该 是什么。但也许这就是进步。

更新:我在文档中发现资源 ID 应该是什么(我认为),尽管它只是称为“id”here我现在收到“权限被拒绝”错误!

我现在已经完成了对 Google API 示例代码的大量重组,该示例代码有一个 10k+ 行的文件,其中包含 100 多个 类。您可以在此处找到我的库版本以及示例用法:https://github.com/maxanstey/php-modern-google-pay