Предварительные условия
- Это было сделано с использованием учетной записи G-Suite, я не уверен, что это можно сделать с помощью обычной учетной записи Gmail.
- проект Google Cloud
- Nodejs и NPM/пряжа установлены
- Основные знания о JavaScript и ES6
Введение
Клиент попросил меня интегрировать систему планирования на ее веб-сайт, чтобы облегчить ее назначения. Я сказал ей, что это будет дорогое решение, написанное рукой, так как она только небольшая компания. Однако я всегда готов изучать новые вещи и посмотрел способы сделать это. Одна из первых вещей, о которых я думал, и является частью нашей повседневной жизни – это календарь Google. Это легко и надежно. Поэтому я посмотрел на API и что и/или если это удалось интегрировать его.
Головные боли и решения (эта часть может быть пропущена)
С пакетом NPM Googleapis. У вас есть доступ к различным услугам Google. Однако на мой взгляд, API задокументированы, различные части в одном месте другие детали в другой, я не всегда был уверен, что запчасти действительно связаны с пакетом NPM.
Мне потребовалось много времени, чтобы понять часть аутентификации. После попытки API с Oauth 2.0 работал мое приложение. Но токен был коротким. Я не хотел головную боль повторять процесс аутентификации. Я думал, что должен быть какой-то другой путь, поэтому я посмотрел в ключи API. Google предоставляет это, но не для каждого API, но календарь не поддерживался. Решение, наконец, пришло после многих поисков и прочтения. Учетная запись службы Google. Это то, что я собираюсь поделиться с вами, ребята, сегодня. Это на самом деле довольно дарн легко.
Настройка учетной записи Google Service (в консоли Google Cloud)
Оба. Эта статья не будет входить на глубину, создавая проект Google Cloud
В консоли перейдите к Я И управление -> Сервисные аккаунты и создать новую учетную запись услуг. Дайте ему имя, идентификатор (это также электронное письмо, которое нам нужно позже) и описание. Нажмите Создать. Эта учетная запись не нуждается в разрешениях. Нажмите Продолжить. Эта учетная запись не нуждается в пользовательской учетной записи службы, ни администратора. Но нам понадобится ключ JSON. Файл будет загружен, что нам понадобится позже.
Календарь
Теперь мы добавим электронную почту учетной записи службы (ID) в календарь. Добавьте его в календарь. Нажмите здесь знать, как. Электронная почта должна иметь следующее разрешение Внести изменения в события Отказ
Идентификатор календаря можно найти здесь нам также понадобится.
Ну, это было легко, не так, не все должно быть бюрократическим.
Веселая часть
Теперь у нас будет несколько базовых тестов Nodejs, создайте новый проект Dir с NPM init -y и установить NPM I-S Googleapis Date-FNS к проекту. Дата FNS Мы будем использовать для форматирования и манипулирования датами. Скопируйте файл учетных данных JSON в корню каталога проекта.
Давайте создадим get.js со следующим кодом:
const { addWeeks } = require('date-fns')
const { google } = require('googleapis')
const credentials = require('.json')
const scopes = ['https://www.googleapis.com/auth/calendar']
const client = google.auth.getClient({
credentials,
scopes,
})
client.subject = ''
const calendar = google.calendar({ version: 'v3', auth: client })
calendar.events.list(
{
calendarId: '',
timeMin: new Date().toISOString(),
timeMax: addWeeks(new Date(), 1).toISOString(), // Let's get events for one week
singleEvents: true,
orderBy: 'startTime',
},
(err, res) => {
if (err) {
console.log(`The API returned an error: ${err}`)
}
// console.log(res.data.items) // All data
const appointments = res.data.items.map((appointment) => ({
start: appointment.start.dateTime || appointment.start.date,
end: appointment.end.dateTime || appointment.end.date,
id: appointment.id,
status: appointment.status,
creator: appointment.creator,
description: appointment.description,
}))
console.log(appointments)
},
)
И давайте также создадим новое событие календаря:
const { addMinutes } = require('date-fns')
const { google } = require('googleapis')
const credentials = require('.json')
const scopes = ['https://www.googleapis.com/auth/calendar']
const client = google.auth.getClient({
credentials,
scopes,
})
client.subject = ''
const calendar = google.calendar({ version: 'v3', auth: client })
calendar.events.insert(
{
calendarId: '',
resource: {
start: {
dateTime: new Date().toISOString(),
timeZone: '',
},
end: {
dateTime: addMinutes(new Date(), 60).toISOString(),
timeZone: '',
},
summary: 'Test event',
status: 'confirmed',
description: 'Test description',
},
},
(err, event) => {
if (err) console.log('Error', err)
console.log(event.data)
},
)
Это было много работы, чтобы найти и выяснить. Я многому научился, особенно то, что на самом деле это не так усердно!
Это мой первый пост, помогите мне с моими навыками письма и поделиться своими мыслями!
Надеюсь, это хорошо, Happy Hacking!
Оригинал: “https://dev.to/maartennnn/google-calendar-integration-with-nodejs-without-oauth-2-0-5256”