Доступ к Google My Business API без входа в систему (с использованием служебной учетной записи)

Я хочу получить доступ к местоположениям, связанным с моей учетной записью, и их обзорам, для этого я использую Google My Business API, и у меня есть доступ к нему (он работает на oAuthplayground).

Теперь я хочу получить доступ к API моего бизнеса Google без входа в свою учетную запись, для этого я пытаюсь заставить его работать с учетной записью службы. Но пока не повезло, пожалуйста, совет, как поступить с этим. Я включил пакет G в учетной записи службы, а также попытался предоставить доступ к электронной почте (ID) учетной записи службы для управления моим бизнесом, но он остается в приглашенный государство, так как нет никакого способа принять приглашение.

Когда я пытаюсь отправить запрос, используя мою учетную запись в качестве темы.

$client = new Google_Client();
$client->addScope('https://www.googleapis.com/auth/plus.business.manage');
$client->setAuthConfig(dirname(__FILE__) . '/Xyz Review API-service account.json');
$client->setSubject('xyz*****[email protected]');
$business_service_class = new Google_Service_Mybusiness($client);
$result_accounts = $business_service_class->accounts->listAccounts();
echo json_encode($result_accounts);
exit;

Отклик:
{ «NextPageToken»: нулевая}

Если я использую идентификатор учетной записи службы Google в качестве идентификатора электронной почты в теме, я получу следующий ответ.

$client->setSubject('[email protected]');

Отклик:
Ошибка 500
{«error»: «unauthorized_client», «error_description»: «неавторизованный клиент или область в запросе». }

Если я делаю это совершенно неправильно, пожалуйста, дайте совет, как поступить с этим. Спасибо.

9

Решение

Я столкнулся с проблемой аутентификации для моего внутреннего сервиса с Google Apis.
В основном существует два метода:

  1. создайте страницу, чтобы принять ваше приложение для доступа к учетной записи Google
  2. создать сертификат для аутентификации приложения с «неявным» утверждением

Как я уже сказал, я использую API Google для внутреннего проекта, поэтому первый вариант не подлежит обсуждению (сервис не является публичным).
Идти к https://console.cloud.google.com и создайте новый проект, затем перейдите к «api manager», затем «учетные данные», затем создайте «учетные данные службы».

Если вы выполните все эти шаги, у вас есть сертификат с расширением .p12, это ваш ключ для доступа к API Google (помните, что вы должны включить ключ для доступа к конкретному API Google вы хотите).

Я вставляю пример, извлеченный из моего проекта, я использую календарь Google, но аутентификация одинакова для каждой службы.

   $client_email = '[email protected]';
$private_key = file_get_contents(__DIR__ . '/../Resources/config/xxxx.p12');
$scopes = array('https://www.googleapis.com/auth/calendar');
$credentials = new \Google_Auth_AssertionCredentials(
$client_email,
$scopes,
$private_key
);

$this->client = new \Google_Client();
$this->client->setAssertionCredentials($credentials);
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]