7

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

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

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

$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 учетной записи службы ID как электронный идентификатор в теме, то я получаю следующий ответ.

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

Ответ: Ошибка 500 { "Ошибка": "unauthorized_client", "error_description": "Несанкционированное клиент или сферу в запросе" }

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

+0

Я не уверен, что API будет работать с учетной записью службы, однако, насколько я понимаю, чтобы использовать учетную запись службы так, как вы хотите, вам необходимо включить широковещательную передачу домена. Я вижу, что Google Мой бизнес отображается как услуга, включенная в «Другие службы Google» учетной записи G Suite. Пробовали ли вы следующие шаги здесь: https://developers.google.com/api-client-library/php/auth/service-accounts? Возможно, вам просто нужно включить DWD. Дайте мне знать, если это сработает. – Morfinismo

+0

@Morfinismo Я включил DWD в учетной записи службы, тогда только я пробовал вышеперечисленные вызовы api. – Hmmm

+0

@ Хммм, вы когда-нибудь получали мой бизнес-апи, работая с учетной записью службы? если да, то как? – Zath

ответ

1

Я столкнулся с проблемой аутентификации для своей внутренней службы с помощью google apis. В принципе существует два метода:

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

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

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

Вставить пример, извлеченный из моего проекта, я использую календарь 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); 
+0

Google_Auth_AssertionCredentials удаляется из google-api -php версии 2. (Вы можете проверить здесь - https://github.com/google/google-api-php-client/blob/master/UPGRADING.md) Я скачал json вместо .p12, и этапы все равно не работают. – Hmmm

Смежные вопросы