Я хочу создать скрипт, который будет проверять Календарь Google, прошедшего проверку подлинности, через клиент PHP Google Calendar. Я смог создать простую страницу, которая позволяет пользователю Auth и разрешать события Calendar. Я получаю токен, а затем захватываю 15 предстоящих событий через:
$googleCal = new Google_Service_Calendar($googleClient); $results = $googleCal->events->listEvents($calendarId, $optParams);
Но то, с чем я борюсь, – это сохранить это, чтобы я мог каждый день проверять скрипт, чтобы увидеть, были ли добавлены новые события. Я думаю, что у меня есть близко, просто изо всех сил пытаюсь преодолеть финишную черту.
Благодаря!
–
Обновление, я пытаюсь использовать токен обновления, вот мой код:
public function checkRedirectCode() { if(isset($_GET['code'])) { $this->client->authenticate($_GET['code']); // $this->setToken($this->client->getRefreshToken()); $this->setToken($this->client->getAccessToken()); $this->storeUser($this->getPayload()); return true; } return false; } public function setToken($token) { $_SESSION['access_token'] = $token; $this->client->setAccessToken($token); }
Я смог повторить токен обновления, поэтому я знаю, что получаю правильный токен обновления, но я получаю ошибки всякий раз, когда использую строку с комментариями. Есть идеи?
Чтобы позволить вызывать сценарий за пределами срока действия исходного токена доступа (который длится только один час), вам нужно будет извлечь и сохранить токен обновления во время начальной авторизации, а затем использовать его для генерации нового токена доступа каждый раз ваш скрипт запускается.
Точки доступа имеют ограниченный срок службы. Если вашему приложению требуется доступ к API Google за пределы срока службы одного токена доступа, он может получить токен обновления. Ток обновления позволяет вашему приложению получать новые токены доступа.
https://developers.google.com/identity/protocols/OAuth2#basicsteps (4. Обновите токен доступа, если необходимо.)
После того, как пользователь аутентифицировал ваше приложение, они возвращаются в ваш URI перенаправления с помощью строки запроса code
.
Ниже приведен пример аутентификации и получения токена обновления (это использует Analytics, но для других служб он должен быть одинаковым):
$client = new Google_Client(); $client->setClientId('xxx'); $client->setClientSecret('xxx'); $client->setRedirectUri('xxx'); //authenticate with the code returned from google $authenticate = $client->authenticate($_GET['code']); //get the refresh token $refreshToken = $client->getRefreshToken(); //store refresh token in database...
Затем, когда вы запускаете свой ежедневный скрипт, используйте токен обновления (извлеченный из вашей базы данных) для создания нового токена доступа:
$client = new Google_Client(); $client->setClientId('xxx'); $client->setClientSecret('yyy'); $client->addScope(Google_Service_Analytics::ANALYTICS_READONLY); $client->refreshToken($user->refresh_token); $newToken = $client->getAccessToken(); $client->setAccessToken($newToken);