Google Calendar Api. невозможно подключиться к другому пользовательскому календарю - PullRequest
0 голосов
/ 06 апреля 2020

Я понимаю, что здесь уже были подобные вопросы, но ответы на них мне не помогли. Попытка подключиться через служебную учетную запись к календарям пользователей, которые являются частью домена. Для подключения я использую Google API PHP Клиент (https://github.com/googleapis/google-api-php-client) При настройке учетной записи следуйте инструкциям (https://developers/admin-sdk/directory/v1/guides/delegation)

Вот мой код:

    <?php
    require '/vendor/autoload.php';

    $client = new Google_Client();

    putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json');
    $client->useApplicationDefaultCredentials();
    $client->authorize();
    $scopes = implode(' ', [Google_Service_Calendar::CALENDAR, Google_Service_Calendar::CALENDAR_EVENTS]);
    $client->setScopes($scopes);
    $client->setSubject('user@email.com');

    $service = new Google_Service_Calendar($client);
    $optParams = [
        'maxResults' => 10,
        'orderBy' => 'startTime',
        'singleEvents' => TRUE,
        'timeMin' => date('c')
    ];
    $results = $service->events->listEvents('root@email.com', $optParams);
    $events = $results->getItems();

И тогда я получаю ошибку авторизации:

Error: {
  "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."
}

Можете ли вы сказать мне, если кто-то уже сталкивался с такой ошибкой? Должна ли root@email.com быть почта или почта, сгенерированная во время настройки доступа? Или проблема вообще где-то еще?

Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 07 апреля 2020

Ваш код на самом деле правильный. Убедитесь, что вы авторизовали свою учетную запись службы для использования тех же областей, которые вы пытаетесь использовать в своем коде. Это общая проблема с учетными записями служб. Здесь описан переход от docs :

  1. Go к консоли администратора домена G Suite.
  2. Выберите Security из списка элементов управления. Если вы не видите «Безопасность» в списке, выберите «Дополнительные элементы управления» на серой панели в нижней части страницы, затем выберите «Безопасность» в списке элементов управления.
  3. Выберите «Дополнительные параметры» в списке параметров.
  4. Выберите «Управление доступом клиентов API» в разделе «Аутентификация».
  5. В поле «Имя клиента» введите идентификатор клиента, полученный при выполнении шагов создания учетной записи службы.
  6. В One или в поле Дополнительные области API введите области, необходимые для вашего приложения (список возможных областей см. в разделе Авторизация запросов). Например, если вам требуется общедоменный доступ к календарю и событиям календаря: https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.events

  7. Нажмите Авторизовать Кнопка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...