Получите разрешения на использование Календаря Google для использования их с сервера - PullRequest
0 голосов
/ 09 июня 2018

Требование :

Мне нужно разработать следующую функцию: пользователь нажимает кнопку на моем сайте, а затем появляется диалоговое окно Google, запрашивающее разрешения в моем календаре для моегоприложение.Если пользователь принимает это - мое серверное приложение (скажем, NodeJS) должно иметь возможность читать его события в любое время (не только в течение 30 дней).

Вот что я пробовал :

Я следовал этим учебникам (и NodeJS, и Browser) https://developers.google.com/calendar/quickstart/nodejs

Учебник NodeJS дает мне разрешения для моей учетной записи (хотя мне нужно, чтобы пользователи давали разрешения для своих учетных записей).

Учебник по браузеру открывает диалоговое окно и запрашивает разрешения.Если пользователь принимает запрос, то он заканчивается разрешением в календаре только на 1 час (поэтому, даже если я могу использовать токен с моего сервера, это не решит проблему).Чтобы проверить это, просто попробуйте напечатать результат Обещания из handleAuthClick, изменив его немного

gapi.auth2.getAuthInstance().signIn().then(res => {console.log(res)});

Посмотрите на expires_in (или expires_at) в напечатанном результате:

{
  "El": "117770076845340691060",
  "Zi": {
    "token_type": "Bearer",
    "access_token": "ya29.Glb...zr8Yx",
    "scope": "https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email openid email profile",
    "login_hint": "AJDLj...WlQ",
    "expires_in": 3600,
    "id_token": "eyJhvGciO...sHxw6HcA",
    "session_state": {
      "extraQueryParams": {
        "authuser": "1"
      }
    },
    "first_issued_at": 1528384733411,
    "expires_at": 1528388333411,
    "idpId": "google"
  },
  "w3": {
    "Eea": "117770076845340691060",
    "ig": "Bryan Gray",
    "ofa": "Bryan",
    "wea": "Gray",
    "Paa": "https://lh3.googleusercontent.com/-zQ8KN1XZtJI/AAAAAAAAAAI/AAAAAAAAAAA/AB...e/s96-c/photo.jpg",
    "U3": "alex@khealth.ai"
  }
}

1 Ответ

0 голосов
/ 10 июня 2018

Токены доступа можно использовать только в течение часа, вам нужен токен обновления, который позволит вам запрашивать новый токен доступа, когда он вам понадобится.Для этого вам нужно запросить автономный доступ.

 gapi.signin2.render('glogin', {
                'class': 'g-signin',
                redirect_uri: 'postmessage',
                onsuccess: signInCallback,
                cookiepolicy: 'single_host_origin',
                accesstype: 'offline',
                theme: 'dark'
            });

Код из этого примера Google oauth2

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