2

我尝试使用迄今为止尚未被 v1 取代的旧 v4.9 端点,例如:

https://developers.google.com/my-business/reference/rest/v4/accounts.locations/reportInsights
https://developers.google.com/my-business/reference/rest/v4/accounts.locations.reviews

但是,这些端点都不再工作了。

我正在使用缺少这些端点的 PHP 客户端,但使用此处列出的官方 v4.9 库:https://developers.google.com/my-business/samples/previousVersions我已经能够访问一些旧端点,例如评论。

但是它们不再返回任何数据或数据对象为空。

有人遇到过类似的问题吗?

4

1 回答 1

1

v4.9(尚未弃用)端点(例如评论、见解等)正在运行,但官方库已损坏且拙劣

我不得不使用Guzzle 客户端直接到达端点来编写替换代码。因此,您需要为这些 v4.9 端点从头开始编写 API 库,因为官方库不起作用。

如何获取评论:

public static function listReviews($client, $params, $account, $location)
    {
        $response = $client->authorize()->get('https://mybusiness.googleapis.com/v4/' . $account . '/' . $location . '/reviews', ['query' => $params]);
        return json_decode((string) $response->getBody(), false);
    }

如何获取见解:

/** v4.9 working 02/2022 **/
    public static function reportInsights($client, $params, $account)
    {
        try {
            $response = $client->authorize()->post('https://mybusiness.googleapis.com/v4/' . $account . '/locations:reportInsights', [
                \GuzzleHttp\RequestOptions::JSON => $params,
            ]);
        } catch (\GuzzleHttp\Exception\RequestException $ex) {
            return $ex->getResponse()->getBody()->getContents();
        }
        return json_decode((string) $response->getBody(), false);
    }

如何为洞察准备有效载荷:

$params = new \stdClass();
$params->locationNames = $account->name . '/' . $location->name;
$time_range = new \stdClass();
$time_range->startTime = Carbon::parse('3 days ago 00:00:00')->toISOString();
$time_range->endTime = Carbon::parse('2 days ago 00:00:00')->toISOString();
if ($force == 'complete') {
       $time_range->startTime = Carbon::parse('17 months ago 00:00:00')->toIso8601ZuluString();
       $time_range->endTime = Carbon::parse('3 days ago 00:00:00')->toIso8601ZuluString();
}
$params->basicRequest = new \stdClass();
$params->basicRequest->timeRange = $time_range;
$params->basicRequest->metricRequests = new \stdClass();
$metric_request = new \stdClass();
$metric_request->metric = 'ALL';
$metric_request->options = ['AGGREGATED_DAILY'];
$params->basicRequest->metricRequests = [
      $metric_request,
];

注意:如果您收到空洞见响应,则必须使用新的 v1 API 调用检查验证,例如:

$verifications = \Google_Service_MyBusinessVerifications($client)->locations_verifications->listLocationsVerifications($location->getName());
$verification = '0';
if ($verifications->getVerifications()) {
    $verification = $verifications->getVerifications()[0]->getState();
    }

使用带有现有令牌的官方 API 客户端(需要通过 OAuth2 获取):

$provider = new GoogleClientServiceProvider(true);
$client = $provider->initializeClient($known_token, ['https://www.googleapis.com/auth/plus.business.manage', 'https://www.googleapis.com/auth/drive']);
于 2022-01-31T18:28:15.667 回答