#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 вместо того, чтобы возвращаться к моему сценарию. Ошибка новичков 🙂