Проблема:
Я создаю простое бэкэнд-приложение, которое проверит некоторые вещи в моей учетной записи в календаре Google.Я хочу, чтобы он запускал один вызов API один раз в неделю.
Календарь API требует использования oAuth2.Все примеры, которые я обнаружил, требуют взаимодействия с человеком:
- метод запуска
- сервер просит пользователя открыть браузер по специальному URL и скопировать код, отображаемый там
- пользователь делает это ивставляет код в консоль
- сервер проверяет его и сохраняет токен в некоторый файл
- сервер выполняет вызов календаря API
Проблема в том, что я не хочуделай это каждую неделю.Я хочу, чтобы он выполнялся один раз, а затем запускался без присмотра.
Один из способов - установить дату истечения срока действия токена более 1 недели, а затем обновлять ее при каждом вызове.Но это не могло восстановить соединение в некоторых случаях (например, потеря питания).
То, что я пробовал до сих пор: я явно начал здесь .Это сработало, но мне пришлось использовать браузер.
Тогда я нашел google-auth-library-nodejs .Но это по умолчанию JWT, который затем не работает с календарем.Или, возможно, я делаю это неправильно:
private async initApiKey() {
const client = await auth.getClient();
const calendar = await google.calendar({version: 'v3', client});
const events = await calendar.events.list({
calendarId: 'primary',
timeMin: (new Date()).toISOString(),
maxResults: 10,
singleEvents: true,
orderBy: 'startTime',
});
return client;
}
google.calendar
должно быть передано oauthclient, а здесь client
- JWTClient.Я думаю, что я мог бы заставить oAuth, но это заставило бы браузер (он даже использует opn).
Как это сделать?