Я не могу получить список Locations из моего бизнеса в моем коде (PHP использует «Клиентская библиотека Google API для PHP» вместе с «Google_Service_MyBusiness«Классы), когда я использую Проверка подлинности «Сервисной учетной записи», API возвращает пустой список местоположений.
У меня уже есть Предпосылки и сделал Базовая настройка, кстати, я с успехом получил информацию об OAuth Playground под определенным AccountId, например: 1111111111, предоставленную другим ответом там на «OAuth Playground».
(PS: я проверил с моими учетными записями «PERSONAL» и «LOCATION_GROUP» и добился успеха с обоими).
Но когда я пытаюсь сделать это поверх своего кода с помощью аутентификации Учетной записи Сервера, я не могу получить всю информацию, только данные Учетной записи, которые возвращают другой AccoundId, например, 2222222222, отличающийся от Учетных записей, которые я получил на OAuth Playground.
Я выполнял процесс аутентификации на OAuth Playground, используя тот же проект, в котором я создал «Сервисную учетную запись», кстати, Разрешение этой «Сервисной учетной записи» является ВЛАДЕЛЕЦОМ.
Ранее моя роль в моей компании в Google My Bussiness была «SITE_MANAGER», поэтому я увидел ответ форума где только уровень / роль «МЕНЕДЖЕР» может перечислять местоположения, поэтому я попросил изменить свое разрешение, но это не помогло в списке местоположений.
Итак, я увидел другой Статья поддержки Google My Business Рекомендовав создать «Группу местоположений» и поместить мое текущее «Местоположение» в эту группу, чтобы было легче справиться с этим, я сделал это, но безуспешно.
Мой код прост, основан на Руководство Google, OAuth 2.0 для серверных приложений, и немного Форум Вопросs (Кстати, авторский вопрос имеет ту же проблему, что и я):
<?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);
}
}
}
Я ожидал Местоположение моего бизнеса (также отзывы, но это следующий шаг), но я только что получил пустой Список Местоположения.
Наконец, я добился успеха, используя ключи ClientId / ClientSecret вместе с токеном обновления, ранее полученным в Google OAuth 2 Playground, когда я впервые даю разрешение (моему) приложению вместо способа аутентификации «Сервисная учетная запись» 🙂
$client = new Google_Client();
$client->setClientId($clientId);
$client->setClientSecret($clientSecret);
$client->addScope("https://www.googleapis.com/auth/plus.business.manage");
$client->setSubject('my email user on GMB');
$client->refreshToken(' ###### ')
Теперь я получил все необходимые данные для своего приложения.
Других решений пока нет …