API календаря Google поддерживает связь с аккаунтом - PullRequest
0 голосов
/ 08 апреля 2020

Я новичок в Google Calendar API (PHP / MySQL и codeigniter 3). Я хочу настроить двустороннюю синхронизацию своего календаря.

Мне удается авторизовать восстановление событий, а также изменять, удалять их и добавлять новые.

Но после в то время как мой token_access больше не действителен. Как сделать так, чтобы моему приложению не нужно было переподключать учетную запись Google при каждом запуске? Я думаю, что я не очень хорошо понял, как работает это правило.

Я основан на этом уроке https://techarise.com/integrate-google-calendar-api-with-codeigniter-calendar-library/

Если бы вы могли просветить меня по этому вопросу?

Большое спасибо

Ответы [ 2 ]

2 голосов
/ 09 апреля 2020

Но через некоторое время мой token_access больше не действителен.

Это нормально, и нет способа помешать вам подключиться к Google для получения учетных данных.

На самом деле вам нужно refre sh ваш токен , поэтому вам не нужно получать совершенно новый Authorization code.

Если вы хотите получить более подробное объяснение, чтобы понять, как работает рабочий процесс OAuth2 в Google, я бы порекомендовал вам прочитать эту страницу из официальной документации . И если вы хотите прочитать все RF C из OAuth2 , вы можете сделать это.

Хотя я настоятельно рекомендую использовать и тестировать на OAuth2 Playground , чтобы увидеть, какой именно HTTP-запрос вам нужно сделать, чтобы обновить sh токены.


TL; DR: Срок действия маркера доступа истекает после его создания, и это ожидается. Вам необходимо использовать токен refre sh, чтобы получить новый токен доступа.

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

Спасибо за ваши ответы. Это позволило мне написать этот рабочий код! Независимо от компьютера или мобильного клиента, моя учетная запись автоматически подключается без необходимости go через экран согласия. И двунаправленная синхронизация сделана правильно. Большое вам спасибо

  public function getClientGoogle(){
      if($this->dataUserCal->google_calendar == 'Oui'){
        if ($this->googleapi->isAccessTokenExpired()) {
        $this->googleapi->setAccessToken(json_decode($this->dataUserCal->data_token_google,true));
  $r = $this->googleapi->getRefreshToken();
      $token =  $this->googleapi->fetchAccessTokenWithRefreshToken($this->googleapi->getRefreshToken());
    $this->tokenAccessGoogle = $token['access_token'];
            $this->db->set('access_key_google', $token['access_token']);
            $this->db->set('data_token_google', json_encode($token));
          $this->db->set('date_access_key_google',date('Y-m-d H:i:s'));
    $this->db->where('id', $this->session->userdata('id_user'));
    $this->db->update('users');
        } else {
         $this->tokenAccessGoogle = $this->dataUserCal->access_key_google;
        }
      }

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