API таблиц Google от AWS Lambda

Я пробую простой код api листов Google, сделанный в JAVA, и запускаю его из функции AWS Lambda, и у меня возникает ошибка тайм-аута, подобная этой

2018-04-20 01:55:01.573:INFO::Started SocketConnector@localhost:35315 Please open the following address in your browser:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=523391452358-5o611gt4igv3nik2blim3kr3q2m690sl.apps.googleusercontent.com&redirect_uri=http://localhost:35315/Callback&response_type=code&scope=https://www.googleapis.com/auth/spreadsheets.readonly END RequestId: d495a239-443d-11e8-9619-bd212b7bbf47 REPORT RequestId: d495a239-443d-11e8-9619-bd212b7bbf47 Duration: 60046.56 ms Billed Duration: 60000 ms Memory Size: 128 MB Max Memory Used: 48 MB
2018-04-20T01:55:58.627Z d495a239-443d-11e8-9619-bd212b7bbf47 Task timed out after 60.05 seconds

Похоже, что Google SDK хочет открыть браузер для аутентификации пользователя, но в AWS Lambda нет браузера. Есть ли другой способ аутентификации без открытия браузера? Если я использую https://developers.google.com/identity/protocols/OAuth2ServiceAccount#jwt-auth, он будет работать? У кого-нибудь есть полезные ссылки / образцы, которые я могу использовать? Я не опытный программист, очень ценю вашу помощь, заранее спасибо.

У меня вопрос. В вашей ситуации каждый пользователь вызывает API, используя идентификатор клиента и секрет каждого пользователя? Или каждый пользователь или пользователь вызывает API, используя один идентификатор клиента и секрет?

Tanaike 24.04.2018 05:41

Вы должны иметь возможность использовать ключ API для вызова API Google Таблиц без токена OAuth (если вы не получаете доступ к личным данным профиля пользователя).

Ashan 24.04.2018 05:56

@Tanaike В моем случае пользователь вызывает API, используя один идентификатор клиента и секрет.

Lobo 24.04.2018 07:27

@Ashan, на самом деле то, что я пытаюсь сделать, пользователь из моего веб-приложения сгенерирует отчет, затем они могут щелкнуть «экспорт в лист Google», который вызовет шлюз AWS API, затем лямбда-функция AWS будет экспортировать отчеты в GSheet, для пользователей, у которых есть учетная запись Google, они должны войти в систему и разрешить доступ. У вас есть какие-либо предложения?

Lobo 24.04.2018 07:38

В этом потоке вы можете получить токен из внешнего интерфейса, инициировать поток OAuth и использовать этот токен для отправки на шлюз API для выполнения действия Google API. Это будет не лучший пользовательский опыт, но я считаю, что это рабочий процесс.

Ashan 24.04.2018 07:40

Привет, @Ashan, спасибо за предложение. Не могли бы вы объяснить немного больше

Lobo 24.04.2018 07:55

Я не мог понять ситуацию. Количество пользователей только одно? Прошу прощения за мои плохие знания английского языка.

Tanaike 24.04.2018 07:55

@Tanaike более 1 пользователя, на самом деле я тоже не уверен, правильно ли я вам отвечу. Я новичок в этом: '|

Lobo 24.04.2018 08:02

В вашей ситуации несколько пользователей используют сервер, используя идентификатор клиента и секрет клиента каждого пользователя. В этом случае электронная таблица находится на Google Диске каждого пользователя. Каждый пользователь создает или обновляет собственную таблицу. Если я правильно понимаю, авторизация требуется для использования API для каждого пользователя Google, использующего каждый браузер, из-за использования метода POST. И может потребоваться изменить объем https://www.googleapis.com/auth/spreadsheets.readonly. Если таблица находится на Google Диске владельца. Авторизация должна быть сделана только владельцем.

Tanaike 24.04.2018 08:14

Когда пользователь нажимает на отчет, он будет перенаправлен на вход в Google (только один раз) для авторизации этого приложения, а затем вы получите токены, которые могут быть отправлены на серверную часть для создания документа Google / изменения и т. д.

Ashan 24.04.2018 08:55

Спасибо большое, ребята, попробую и обновлю здесь :)

Lobo 24.04.2018 09:07

Привет @Ashan, знаете ли вы, как передать токен, полученный с URL-адреса, для отправки запроса POST на сервер Google для получения учетных данных пользователя?

Lobo 26.04.2018 05:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
12
1 595
1

Ответы 1

Вы можете использовать ключ учетная запись службы, чтобы избежать использования браузера.

A service account is a special type of Google account intended to represent a non-human user that needs to authenticate and be authorized to access data in Google APIs.

Другие вопросы по теме