Я хочу получить доступ к местоположениям, связанным с моей учетной записью, и их обзорам, для этого я использую 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»: «неавторизованный клиент или область в запросе». }
Если я делаю это совершенно неправильно, пожалуйста, дайте совет, как поступить с этим. Спасибо.
Я столкнулся с проблемой аутентификации для моего внутреннего сервиса с Google Apis.
В основном существует два метода:
Как я уже сказал, я использую 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);
Других решений пока нет …