"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
更新:我现在差不多想出了如何做到这一点。我正在构建一个库来清理流程,一旦它处于 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