API календаря Google, класс Google_Service

#php #api #calendar

#php #API #Календарь

Вопрос:

Я надеюсь, что вы сможете мне помочь.

Я пытаюсь подключиться к API Google (Calendar), используя аутентификацию Oauth2.

Для этого я выполнил следующие шаги:

  • Регистрация приложения через консоль разработчиков Google
  • Установленная клиентская библиотека с помощью composer (google-api-php-client)
  • Разместил скрипт ниже в папке поставщика:
 require_once 'autoload.php ';
 требовать('google/apiclient-services/src/Google/Service/Oauth2.php ');
 session_start(); 

 // ******************************************************** //
 // Получить эти значения из https://console.developers.google.com
 // Обязательно включите API аналитики
 // ******************************************************** //
 $client_id = 'myclientid';
 $client_secret = 'myclientsecret';
 $redirect_uri = 'https://domain.nl/dev/vendor/google/apiclient-services/src/Google/Service/Oauth2.php '; // идентично, как в консоли Google

 $client = новый Google_Client();
 $client->setApplicationName("Client_Library_Examples");
 $client->setClientId($client_id);
 $client->setClientSecret($client_secret);
 $client->setRedirectUri($redirect_uri);
 $client-> setAccessType('offline'); // Возвращает нам наш refreshtoken

 $client->setScopes(массив('https://www.googleapis.com/auth/calendar.readonly '));


 // Для выхода из системы.
 if (isset($_GET['выход из системы'])) {
 сбросить значение ($_SESSION['token']);
 }


 // Шаг 2: Пользователь принял ваш доступ, теперь вам нужно его обменять.
 if (isset($_GET['code'])) {

 $client->аутентификация($_GET['code']); 
 $_SESSION['token'] = $client->getAccessToken();
 $redirect = 'https://' . $ _SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
 заголовок('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
 }

 // Шаг 1: пользователь не прошел аутентификацию, мы даем ему ссылку для входа
в систему, если (!isset($_SESSION['token'])) {

 $authUrl = $client->createAuthUrl();

 выведите "Подключи меня!";
 } 


 // Шаг 3: У нас есть доступ, теперь мы можем создать наш сервис
, если (isset($ _SESSION['token'])) {
 $client->setAccessToken($_SESSION['token']);
 выведите "Выход
из системы"; $service = новый Google_Service_Calendar($client); $CalendarList = $service->CalendarList->listCalendarList();; while(true) { foreach ($CalendarList->GetItems() как $calendarListEntry) { echo $calendarListEntry->getSummary()."
n"; // получить события $events = $service->события-> Список событий ($calendarListEntry-> идентификатор); foreach ($events->GetItems() как $event) { echo "-----".$event->getSummary()."
"; } } $pageToken = $CalendarList->getNextPageToken(); if ($pageToken) { $optParams = array('pageToken' => $pageToken); $CalendarList = $service->CalendarList->listCalendarList($optParams); } else { перерыв; } } }

К сожалению, я получаю сообщение об ошибке сразу после нажатия кнопки «Принять» для аутентификации:

Неустранимая ошибка: класс 'Google_Service' не найден в /home/user/domains/domain.nl/private_html/dev/vendor/google/apiclient-services/src/Google/Service/Oauth2.php в строке 32

Исследования Google пока не помогли.

Возможные решения:

  • Правильно задайте путь к автозагрузке. Проверьте.

    require_once 'autoload.php ';
    
  • Запустите поддерживаемую версию PHP. Проверьте (пробовал 5.6 7.1).

  • Проверьте, есть ли что-то другое между библиотекой, которую вы используете в composer.json, и библиотекой, которая фактически загружается автоматически. Проверьте.

Ваша помощь ценится, спасибо!

Ответ №1:

Обновление: это было исправлено. Я использовал Oauth2.php как мой redirect_url вместо того, чтобы возвращаться к моему сценарию. Ошибка новичков 🙂