当我使用“服务帐户”身份验证时,我无法在我的代码下从我的企业获取位置列表(PHP 使用“ Google APIs Client Library for PHP ”和“ Google_Service_MyBusiness ”类) ,API 返回一个空的位置列表.
我已经具备了先决条件并进行了基本设置,顺便说一句,我在 OAuth Playground 上成功获得了信息,在特定的 AccountId 下,例如:1111111111,由“OAuth Playground”上的另一个响应提供。(PS:我用我的“PERSONAL”和“LOCATION_GROUP”帐户进行了测试,并且都成功了)。
但是当我尝试通过服务器帐户身份验证在我的代码上执行此操作时,我无法获取所有信息,只是返回另一个 AccoundId 的帐户数据,例如:2222222222,与我在 OAuth Playground 上获得的帐户不同。
我在 OAuth Playground 上进行了身份验证过程,使用创建“服务帐户”的同一个项目,顺便说一下,这个“服务帐户”的权限是 OWNER。
以前,我在 Google 我的企业中的角色是“SITE_MANAGER”,所以我看到了一个论坛答案,其中只有“MANAGER”级别/角色可以列出位置,所以我请求更改我的权限,但继续不成功在位置列表上。
因此,我看到另一篇Google My Business 支持文章建议创建一个“位置组”并将我当前的“位置”放入该组以方便处理,我这样做了,但再次没有成功。
我的代码很简单,基于Google 指南、OAuth 2.0 for Server to Server Applications和一些论坛问题(顺便说一句,作者的问题与我的问题相同):
<?php
putenv('GOOGLE_APPLICATION_CREDENTIALS=service-account-credentials.json');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->addScope("https://www.googleapis.com/auth/plus.business.manage");
require_once('Google_Service_MyBusiness.php');
$mybusinessService = new Google_Service_MyBusiness($client);
$accounts = $mybusinessService->accounts;
$accountsList = $accounts->listAccounts()->getAccounts();
foreach ($accountsList as $accKey => $account) {
var_dump('$account->name', $account->name);
$locations = $mybusinessService->accounts_locations;
$locationsList = $locations->listAccountsLocations($account->name)->getLocations();
var_dump('$locationsList', $locationsList);
// Final Goal of my Code
if (empty($locationsList)===false) {
foreach ($locationsList as $locKey => $location) {
$reviews = $mybusinessService->accounts_locations_reviews;
$listReviewsResponse = $reviews->listAccountsLocationsReviews($location->name);
$reviewsList = $listReviewsResponse->getReviews();
var_dump('$reviewsList', $reviewsList);
}
}
}
我期望我的业务的位置(也是评论,但它是下一步),但我只是得到空的位置列表。