Google Auth - всегда запрашивать авторизацию, что мне делать с токеном обновления? - PullRequest
0 голосов
/ 27 августа 2018

В настоящее время я обнаруживаю идентификацию OAuth на сервере nodejs, чтобы проверить его с помощью запросов на YouTube API.

Пока это работает, я могу делать запросы. У меня есть только две проблемы.

Во-первых, каждый раз, когда я вхожу в систему, Google запрашивает разрешение, даже если оно уже было предоставлено (и это разрешение отображается в разрешенных приложениях на моем аккаунте).

Согласно этому ответу « при входе в Google всегда запрашивается согласие пользователя », этого не должно происходить, несмотря на то, что я работаю локально.

Мой второй вопрос может помочь мне ответить на первый. Когда я изучал OAuth, я узнал о существовании токена переподготовки, который должен позволять создавать новый токен доступа после истечения срока его действия.

Я просто не могу понять, должен ли я использовать токен обновления или библиотека делает это самостоятельно при отправке запросов?

Я основывался на: https://developers.google.com/youtube/v3/quickstart/nodejs

Каждый сеанс связан с OAuth2Client, содержащим токены и всю клиентскую информацию

[Текущая ситуация]

Жетон обновления обрабатывается библиотекой, как показал Рубен здесь . До сих пор нет ответа о подсказке каждый раз.

1 Ответ

0 голосов
/ 28 августа 2018

После этого быстрого запуска, когда вы проходите авторизацию, вы звоните getToken:

oauth2Client.getToken(code, function(err, token) {
   if (err) {
      console.log('Error while trying to retrieve access token', err);
      return;
   }
   oauth2Client.credentials = token;
   storeToken(token);
   callback(oauth2Client);
});

Ответ объекта token содержит access_token и refresh_token. Refresh_token возвращается только при первом входе в систему (вы можете получить новые, если срок действия token истекает ), и вам необходимо сохранить его для генерации новых токенов доступа.

Как вы также можете видеть в примере, в функции authorize вам необходимо проверить, сохраняли ли вы ранее свои токены.

Затем, чтобы использовать refresh_token, вам нужно позвонить:

oauth2Client.setCredentials({
   refresh_token: YOUR_STORED_REFRESH_TOKEN
});

После установки учетных данных с помощью refresh_token, access_token автоматически обновляется, и вы можете использовать oauth2client для повторного выполнения запросов.

Надеюсь, это понятно!

Ссылка: https://developers.google.com/identity/protocols/OAuth2WebServer#offline

...