google access token, срок действия которого истекает каждые 1 час, как я могу генерировать новый каждый раз? - PullRequest
0 голосов
/ 03 июня 2018

Я работаю над Google DialogFlow Api V2, и мне не совсем понятно, как правильно обращаться с процессом аутентификации.

Я уже создал ключ учетной записи службы в виде файла json, а затем запускаю следующую команду:

gcloud auth activate-service-account --key-file="credentials.json"

, который говорит, что он активирован, тогда я запускаю gcloud auth print-access-token, который выведет мне токен доступа , и этот токен я могу передать в заголовок, используя следующий код:

    fetch(configs.baseUrl + "query?v=20150910", {
        body: JSON.stringify({
           queryInput: {
              text: {
                text: "Hello",
                languageCode: "en-US"
              }
  }}),
        headers: {
            'content-type': 'application/json',
            "Authorization": "Bearer xxxx",
        },
        method: 'POST',
    })
        .then(response => response.json())
        .then(data => {
            console.log(data.result);
        })
        .catch(error => console.error(error))

Это будет прекрасно работать в течение 1 часа до истечения срока действия токена. Вопрос в том, как сгенерировать новый токен, поскольку у меня уже есть service-account-key-file.json могу ли я каким-то образом восстановить токен доступа из этой информации?

Использование этой клиентской библиотеки https://github.com/dialogflow/dialogflow-nodejs-client-v2 работает хорошо. Мне не нужно ничего делать с токеном доступа, но проблема в том, что я не хочу использовать Node.js

Было бы возможно, чтобы мне удавалось получать маркер доступа каждый раз по истечении срока действия, используя только javascript и service-account-key-file.json.сгенерировано.

Буду признателен за примеры кода!

1 Ответ

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

Учитывая последствия для безопасности установки правильного процесса аутентификации, рекомендуется по возможности использовать клиентские библиотеки, например, библиотеку NodeJS.

Однако, если вы хотите реализовать этот процесс самостоятельноВы можете взглянуть на это руководство , в котором объясняется, как настроить OAuth 2.0 для приложений веб-сервера.Шаги заключаются в следующем, вы можете найти примеры запросов и ответов HTTP / REST в руководстве:

  1. Создать учетные данные авторизации.

  2. ОпределитьОбласти доступа: ресурсы, к которым ваше приложение должно обращаться, согласно Документация DialgoFlow API , требуемая область доступа:

https://www.googleapis.com/auth/cloud-platform

Создание запроса на авторизацию

Вручную предоставить доступ к вашему приложению (только один раз).

Получить обновление и доступтокен.

Используйте токен обновления , чтобы получить новый токен доступа после его истечения.

...