Получение согласия пользователя для учетной записи службы - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь получить информацию о своей компании через Google My Business API, но когда я пытаюсь получить информацию через их google-api-php-client, я просто получаю следующее сообщение:

Fatal error:  Uncaught Google_Service_Exception: {
  "error": "unauthorized_client",
  "error_description": "Client is unauthorized to retrieve access tokens using this method."
}

Я следовал их документации ( здесь и здесь ), но безуспешно.

Код:

<code>$client = new Google_Client();
$client->setAuthConfig($ga_keyfile);
$client->addScope("https://www.googleapis.com/auth/plus.business.manage");
$client->setClientId($clientID);
$client->setApplicationName($appname);
$client->setAccessType('offline'); // offline access
$client->setSubject("*********@gmail.com");
$client->setIncludeGrantedScopes(true);
$mybusiness = new Google_Service_MyBusiness($client);
echo "<pre>";
print_r($mybusiness->accounts->listAccounts()->getAccounts());
echo "
";

Также я заметил, что эта ошибка возникает только тогда, когда я $client->setSubject("*********@gmail.com");

Если я опускаю это, он делает запросы, но тогда нет доступного местоположения компании.

Я не уверен на 100%, если это из-за отсутствия согласия пользователя, но после поиска в Google это выглядит так. Я не нашел никакой документации, объясняющей, как получить согласие пользователя. Большинство из них объясняют, что это такое, но не как это сделать.

В качестве 2-го теста я попытался создать URL-адрес авторизации с $auth_url = $client->createAuthUrl(); и установить редирект uri $client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'); (также пытался установить его в ноль: '') Но тогда я получаю ошибку redirect_uri_mismatch. Что должно быть правильно, поскольку вы не можете установить URI перенаправления в учетной записи службы (или в этом случае клиент OAuth2 учетной записи службы)

Так как я могу исправить эту проблему?

...