Подробнее:
- Я создали новый идентификатор Gmail: redu@gmail.com
- redu@gmail.com имеет связанный календарь
- Моему веб-приложению на основе PHP необходимо сделайте с календарем следующее:
- Создайте новый календарь для каждого зарегистрированного пользователя (как дополнительный календарь для redu@gmail.com)
< li>Создайте событие для вошедшего в систему пользователя и добавьте другого зарегистрированного пользователя в качестве приглашенного.
Ниже приведен код, который создает объекты Google_Client и Service с использованием учетных данных учетной записи службы.
function __construct()
{
Service account based client creation.
$this->client = new Google_Client();
$this->client->setApplicationName("Redu");
$this->client->setAuthConfig(CREDENTIALS_PATH);
$this->client->setScopes([SCOPES]);
$this->client->setSubject('redu@gmail.com');
$this->client->setAccessType('offline');
$this->service = new Google_Service_Calendar($this->client);
}
Когда я пытаюсь использовать объект $service для создания календаря или события, я получаю сообщение об ошибке, сообщающее, что разрешения на уровне домена не настроены. Однако, когда я создал учетную запись службы, я включил делегирование на уровне домена.
Ниже приведен мой код для создания Google_Client с использованием ключа учетной записи службы и использования клиента для создания нового календаря для redu. @gmail.com. Обратите внимание, что я поделился календарем redu@gmail.com с reduservice@subtle-breaker-280602.iam.gserviceaccount.com и установил разрешение «Управление изменениями и управление общим доступом». Ошибка, которую я получаю, находится под кодом:
require (__DIR__.'/../../../vendor/autoload.php');
define('CREDENTIALS_PATH', __DIR__ . '/redu_service_account_credentials.json');
define('SCOPES', Google_Service_Calendar::CALENDAR);
function createNewCalendar($userName) {
//Service account based client creation.
$client = new Google_Client();
$client->setApplicationName("REdu");
// path to the credentials file obtained upon creating key for service account
$client->setAuthConfig(CREDENTIALS_PATH);
$client->setScopes([SCOPES]);
$client->setSubject('redu@gmail.com');
$client->setAccessType('offline');
$service = new Google_Service_Calendar($client);
$calendar = new Google_Service_Calendar_Calendar();
$calendar->setSummary($userName);
$calendar->setTimeZone('America/Los_Angeles');
$createdCalendar = $service->calendars->insert($calendar);
// Make the newly created calendar public
$rule = new Google_Service_Calendar_AclRule();
$scope = new Google_Service_Calendar_AclRuleScope();
$scope->setType("default");
$scope->setValue("");
$rule->setScope($scope);
$rule->setRole("reader");
// Make the calendar public
$createdRule = $service->acl->insert($createdCalendar->getId(), $rule);
return $createdCalendar->getId();
}
ОШИБКА:
Fatal error: Uncaught exception 'Google_Service_Exception' with message '{
"error": "unauthorized_client",
"error_description": "Client is unauthorized to retrieve access tokens using this method, or client not authorized for any of the scopes requested."
}'
Подробнее здесь: https://stackoverflow.com/questions/624 ... ar-api-php
Мобильная версия