Я осознаю тот факт, что я не первый, задающий вопрос, но я искал пару дней, и я не могу найти решение моей проблемы. Итак, Thing мне нужно настроить мое приложение с учетной записью Google, и всякий раз, когда пользователь завершает действие, приложение добавляет событие в приложение Google Calendar, не беспокоя пользователя за любое согласие. Мне нужна вся аутентификация для учетной записи приложения, которая должна быть выполнена в коде. Я проделал некоторые поиски, и я думаю, что связь Google Server с сервером через служебную учетную запись - путь. https://developers.google.com/accounts/docs/OAuth2ServiceAccount
Дело в том, что я понятия не имею, как настроить клиента, получить токен доступа и вызвать API с ним. До сих пор я установил Google API с помощью композитора:
{
"require": {
"php": ">=5.3.3",
"zendframework/zendframework": "2.3.*",
"dlu/dlutwbootstrap": "dev-master",
"google/apiclient": "1.0.*@beta"
}
}
И я также создал учетную запись службы из консоли разработчика Google, а также получил идентификатор клиента, адрес электронной почты и т.д. Таким образом, это приводит нас к коду:
$client = new \Google_Client();
$clientId = '<MY ID>';
$service_email = '<THE EMAIL>';
$myMail = '<MY OTHER MAIL>';
$keyFile = './data/<NAME OF FILE>';
$client->setClientId($clientId);
$client->setApplicationName('Timesheet');
$key = file_get_contents($keyFile);
$client->setAssertionCredentials(new Google_AssertionCredentials(
$service_email,
array('https://www.googleapis.com/auth/calendar'),
$key));
$client->getRequestToken();
$calendar = new \Google_Service_Calendar($client);
$event = new Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new EventDateTime();
$start->setDateTime('2014-11-05T10:00:00.000-07:00');
$event->setStart($start);
$end = new EventDateTime();
$end->setDateTime('2014-11-05T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new EventAttendee();
$attendee1->setEmail('<EMAIL ONE>');
$attendee2 = new EventAttendee();
$attendee2->setEmail('<EMAIL TWO>');
$attendees = array($attendee1, $attendee2);
$event->attendees = $attendees;
$createdEvent = $calendar->events->insert('<CALENDAR TO INSERT EVENT INTO>', $event);
Я был бы очень признателен, если бы кто-нибудь мог указать, чего я пропустил, и направить меня на использование API. Заранее спасибо!
С наилучшими пожеланиями,
Valentin
Наконец-то ответ был найден! Ошибка заключалась в вызове вставки:
$calendar->events->insert('primary', $event);
это правильный бит кода. Вам нужно поставить 'primary'
в качестве первого параметра вместо электронного письма.
Надеюсь, это поможет кому-то! :)