paint-brush
NodeJs'de Etkinlik Zamanlayıcısını Nasıl Oluşturdumile@arindam1729
306 okumalar
306 okumalar

NodeJs'de Etkinlik Zamanlayıcısını Nasıl Oluşturdum

ile Arindam Majumder 12m2024/08/18
Read on Terminal Reader

Çok uzun; Okumak

Bu makalede, etkinlikler oluşturabilen ve Google Meet bağlantılarıyla e-posta davetlerini otomatik olarak gönderebilen bir Node.js uygulamasının nasıl oluşturulacağını göstereceğim. Etkinlik zamanlayıcısını oluşturmak için Express çerçevesini kullanacağız. Başlamak için bir node.js ortamı kurmamız ve bir Express sunucusu kurmamız gerekiyor.
featured image - NodeJs'de Etkinlik Zamanlayıcısını Nasıl Oluşturdum
Arindam Majumder  HackerNoon profile picture

giriiş

COVID'den beri takvimim stand-up'lar, ekip toplantıları ve müşteri aramalarıyla dolu.


Ancak bir etkinlik planlamak ve misafirleri davet etmek sıkıcı işlerdir. Bir Cuma günü, bunlara çok fazla zaman harcadıktan sonra, düşündüm ki –

Neden buna bu kadar çok zaman harcıyorum?

sinirli ciddi GIF

Bu yüzden işimi kolaylaştırmak için bir Etkinlik Planlayıcısı oluşturma fikri aklıma geldi!


Bu yazımda, etkinlikler oluşturabilen ve Google Meet bağlantılarını içeren e-posta davetlerini otomatik olarak gönderebilen bir Nodejs uygulamasının nasıl oluşturulacağını göstereceğim.


Heyecanlı mısınız? Ben de.


O halde daha fazla gecikmeden!


Hadi BAŞLAYALIM!

Proje Kurulumu:

1. Node.js Projesi Oluşturun:

Projemizi başlatmak için bir Node.js ortamı kurmamız gerekiyor. O halde bir node projesi oluşturalım. Terminal'de aşağıdaki komutu çalıştırın.

 npm init -y


Bu yeni bir Node.js projesini başlatacaktır.

2. Bağımlılıkları Kurun:

Şimdi projemizin gerekli bağımlılıklarını yükleyeceğiz.

 npm install express googleapis dotenv


Bu, aşağıdaki paketleri kuracaktır:

  • express: Node.js için popüler bir web çerçevesi


  • dotenv: .env dosyasından ortam değişkenlerini yükler.


  • googleapis: Çeşitli Google API'lerine erişim sağlar

3. Ortam Değişkenlerini Ayarlayın:

Daha sonra API kimlik bilgileri gibi hassas bilgilerimizi güvenli bir şekilde saklamak için bir .env klasörü oluşturacağız.

 //.env PORT = YOUR_PORT || 8000 CLIENT_ID = YOUR_CLIENT_ID CLIENT_SECRET = YOUR_CLIENT_SECRET REDIRECT_URL = http://localhost:8000/auth/redirect API_KEY = YOUR_API_KEY

4. Express Server'ı Oluşturun:

Şimdi, kök dizinde bir index.js dosyası oluşturacağız ve basit bir express sunucusu kuracağız. Aşağıdaki koda bakın:

 const express = require("express"); const dotenv = require("dotenv"); dotenv.config(); const app = express(); const port = process.env.PORT || 8000; app.get("/", (req, res) => { res.send("Hello World"); }); app.listen(port, () => { console.log(`Server running on port ${port}`); });

Burada, .env dosyasından PORT numarasına erişmek için "dotenv" paketini kullanıyoruz.


Projenin en üstünde, dosyanın tamamında erişilebilir hale getirmek için dotenv.config() kullanarak ortam değişkenlerini yüklüyoruz.

Google Konsolu Kurulumu

İlk olarak Google Cloud Console'a gideceğiz.


Daha sonra bu Dashboard'u alacağız. (Daha önce bir proje oluşturdum bu yüzden bunu alıyorum, siz başka bir şey alabilirsiniz).

Google Bulut Konsolu

Şimdi yeni bir proje başlatmak için 'Yeni Proje' butonuna tıklayacağız.

Yeni Proje Sayfası


Sırada buna benzer bir şey var. Burada, Projemizin adını ve organizasyonunu ekleyeceğiz. Bu proje için bunu "Mail-integration-Demo" olarak tutuyorum. Sonra devam etmek için oluştur düğmesine tıklayacağız


Yeni Proje Detayları

Sonra, yan gezinme çubuğunda "API'ler ve Hizmetler"i göreceğiz. Bu bölümde, API'leri ve hizmetleri etkinleştirmek için bir alt menü var. Devam etmek için buna tıklayacağız.

API'ler ve Hizmetler

Daha sonra bu projede kullanacağımız API'yi, yani Google Takvim API'sini aktifleştireceğiz.

Google Takvim API'si

Daha sonra OAuth Consent Ekranına geçeceğiz. Burada, Kullanıcı Türünü Harici olarak seçeceğiz. Ve devam etmek için Oluştur düğmesine basacağız.

OAuth onay ekranı


Daha sonra uygulama kayıt sayfasına gideceğiz. Burada uygulamamız hakkında daha fazla bilgi ekleyeceğiz. Uygulamamızın adını ve kullanıcı desteği için bir e-posta adresi ekleyerek başlıyoruz.


Bu proje için projeye "Arindam's Mail Integration" adını vereceğim ve destek için kendi e-posta adresimi kullanacağım.

Uygulama bilgi sayfası

Daha sonra Uygulamanın kapsamını tanımlamamız gerekiyor.

Kapsamlar sayfası

Scopes'ta bu proje için userinfo.email ve userinfo.profile gibi gerekli izinleri ekleyeceğiz.

seçili kapsamlar

Daha sonra uygulamamıza bir adet test kullanıcısı ekleyeceğiz.

Test Kullanıcı Sayfası

İşte bu kadar. Uygulamamız platforma kayıtlıdır.


Şimdi, OAuth İstemci Kimliği sırrımızı oluşturacağız. Bunun için, Kimlik Bilgisi Oluşturma kısmına geçeceğiz.

Google Konsol Panosu

Burada, uygulamamızın türünü ve adını ekleyeceğiz. Bu proje için, bu bir web uygulaması ve adı Arindam's Mail Demo.

OAuth istemci kimliği

Ayrıca bir Yönlendirme URL'si ekledik. Bu proje için bu http://localhost:8000/auth/redirect olacak.

Yönlendirme URL'leri

Daha sonra OAuth kimlik bilgilerini alacağız.

OAuth istemcisi oluşturuldu

Şimdi API Anahtarları oluşturacağız.

API Anahtar Oluşturma Sayfası

Tüm bunları yaptıktan sonra .env dosyamızı daha önce oluşturduğumuz API anahtarları ve OAuth Kimlik Bilgileri ile güncelleyeceğiz.


Bununla birlikte, bu proje için Google Cloud konsolumuzu ayarladık, şimdi bir sonraki bölüme geçelim

OAuth 2 Kimlik Doğrulaması:

Şimdiye kadar temel proje kurulumumuzu yaptık. Şimdi, OAuth2 Kimlik Doğrulamasını Projemize entegre edeceğiz. Bu, uygulamamızın Google servisleriyle güvenli bir şekilde etkileşime girmesini sağlar. Bunun için, öncelikle gerekli paketleri index.js dosyasına aktaracağız.

 const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv');


Daha sonra Google Takvim API'si için gereken erişim kapsamını tanımlayacağız.

 const scopes = ['https://www.googleapis.com/auth/calendar'];


Daha sonra .env dosyasında sakladığımız kimlik bilgilerini kullanarak OAuth 2 istemcisini yapılandıracağız.

 // OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL );


OAuth 2 Yapılandırması'ndan sonra Kullanıcılarımızı doğrulamak için bir Rota oluşturacağız.

 app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } );

Kullanıcılarımız bu yola başvurduklarında Google'ın kimlik doğrulama sayfasına yönlendirilecek ve burada uygulamamıza ilişkin belirli izinler istenecek.


Başarılı kimlik doğrulamasından sonra Google, kullanıcıyı Yönlendirme URL'mize ( /auth/redirect ) yönlendirecektir.

 app.get("/auth/redirect", async (req, res) => { const {tokens} = await oauth2Client.getToken(req.query.code); oauth2Client.setCredentials(tokens); res.send('Authentication successful! Please return to the console.'); } );


Burada, Sorgu'dan yenileme belirteçlerini alıyoruz ve bunları oauth2Client kimlik bilgileri olarak saklıyoruz. Bu kimlik bilgileri, Google Takvim API'sine istekler yapmamıza yardımcı olacak.


İşte index.js tam kodu:

 //index.js const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv'); const app = express(); dotenv.config(); const port = process.env.PORT || 8000; app.get('/', (req, res) => { res.send('Hello World'); } ); // Define the scope of access for the Google Calendar API. const scopes = ['https://www.googleapis.com/auth/calendar']; // OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL ); app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } ); app.get("/auth/redirect", async (req, res) => { const {tokens} = await oauth2Client.getToken(req.query.code); oauth2Client.setCredentials(tokens); res.send('Authentication successful! Please return to the console.'); } );

Google Takvim'de Etkinlikleri Planlama

İşte en önemli kısım geliyor! Bu bölümde Google Takvim'de bir etkinlik planlayacağız!


Başlamak için Google Takvim API istemcisini başlatacağız.

 const calendar = google.calendar({ version: 'v3', auth: oauth2Client });


Daha sonra, Özet, Yer, Başlangıç ve Bitiş zamanı vb. gibi olayın tüm ayrıntılarını ekleyeceğimiz bir olay nesnesi oluşturacağız.

 const event = { summary: 'Tech Talk with Arindam', location: 'Google Meet', description: "Demo event for Arindam's Blog Post.", start: { dateTime: "2024-03-14T19:30:00+05:30", timeZone: 'Asia/Kolkata' }, end: { dateTime: "2024-03-14T20:30:00+05:30", timeZone: 'Asia/Kolkata' }, };

Daha sonra event'i oluşturacağımız Route'u ( /create-event ) oluşturacağız.


Burada, calendar.events.insert() metodunu kullanarak kullanıcının Takvimine bir etkinlik ekliyoruz.

 app.get('/create-event', async (req, res) => { try { const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client, resource: event }); res.send({ status: 200, message: 'Event created', }); } catch (err) { console.log(err); res.send(err); } } );

Bununla birlikte Google Takvim'de etkinlikleri dinamik olarak planlayabiliriz.

Google Meet Bağlantısı Ekleniyor:

Şimdiye kadar, Google Takvim'de basit bir etkinliğin nasıl oluşturulacağını inceledik. Bu bölümde, o Etkinliğe bir Google Meet Bağlantısı nasıl ekleneceğini inceleyeceğiz!


Bunun için, önceki bölümde oluşturduğumuz olay nesnesini güncelleyeceğiz. Bir Google Meet bağlantısı için oluşturma isteğini belirtmek üzere bir conferenceData özelliği ekleyeceğiz.

 conferenceData: { createRequest: { requestId: uuid(), } },


Ayrıca, misafirleri Etkinliğe davet etmek için bir attendees özelliği ekleyeceğiz. İşte bunun basit bir örneği:

 attendees: [ {email: '[email protected]'}, ]


Şimdi Event nesnesi şu şekilde görünüyor:

 const event = { summary: 'Tech Talk with Arindam', location: 'Google Meet', description: "Demo event for Arindam's Blog Post.", start: { dateTime: "2024-03-14T19:30:00+05:30", timeZone: 'Asia/Kolkata' }, end: { dateTime: "2024-03-14T20:30:00+05:30", timeZone: 'Asia/Kolkata' }, colorId: 1, conferenceData: { createRequest: { requestId: uuid(), } }, attendees: [ {email: '[email protected]'}, ] };


Bir sonraki adımda event ekleme adımında conferenceDataVersion parametresini ekleyeceğiz.

 const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event });


Bu, Google Meet Bağlantısı olan bir Etkinlik oluşturacaktır. Bağlantıyı şu şekilde bir yanıt olarak da paylaşabiliriz:

 res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink });

Katılımcılara Hatırlatma Gönderme:

Yani, projemizi neredeyse bitirdik, sadece son dokunuşlar kaldı. Şu ana kadar projemiz etkinliği doğrudan davetli misafirlerin takvimine ekleyecek.


Ancak, bu olaylar hakkında onları bilgilendirmek için bir Mail göndermemiz gerekiyor. Bunun için, olay oluşturma kısmına sendUpdates: 'all', bir parametre eklemeliyiz. Bununla, uygulama davet edilen misafirlere otomatik olarak e-posta gönderecektir.

 const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event });

Bu eklemeyle birlikte projemiz artık hem etkinlik oluşturmayı hem de e-posta bildirimlerini sorunsuz bir şekilde gerçekleştiriyor.

Uygulamanın Test Edilmesi:

Projemizin kodlama kısmı tamamlandı. Şimdi çalışıp çalışmadığına bakalım!


İşte bunun için projeyi başlatalım!

 npm run start


Ve Sunucumuzu 8000 portunda başlattık! Şimdi, kullanıcıyı doğrulamak için http://localhost:8000/auth/ rotasına gideceğiz. Bizi buna benzer bir şeye yönlendirecek:

Giriş Sayfası

Uygulama için bazı izinler isteyecektir.

İzin sayfası

code sorgu parametresi ile /auth/redirect rotasına yönlendirecektir.

/auth/redirect rotası

Kullanıcıyı başarıyla doğruladıktan sonra, Etkinliği planlamak için http://localhost:8000/create-event rotasına gideceğiz.

http://localhost:8000/create-event rotası

Harika! Etkinliğimizin bir Google Meet bağlantısıyla oluşturulduğu anlamına geliyor.


Etkinlik oluşturma sürecinin doğru bir şekilde çalıştığını doğrulamak için Google Takvimimizi kontrol edelim

Google Takvim

Harika! Etkinliğimiz oluşturuldu, bu da Etkinlik oluşturma rotasının mükemmel bir şekilde çalıştığı anlamına geliyor! Ayrıca bir Davet e-postası da aldık:

Etkinlik Davetiye Maili.

Harika! Uygulamamız mükemmel çalışıyor!


Bununla birlikte, Google Takvim'i Node.js uygulamamıza entegre ettik. Aşağıdaki makalelerde, Google Takvim ile daha fazla kullanım örneğini keşfedeceğiz.


O zamana kadar bizi izlemeye devam edin!

Çözüm

Bu blog yazısını faydalı bulduysanız, lütfen bundan faydalanabilecek diğer kişilerle paylaşmayı düşünün. Ayrıca Javascript, React ve diğer web Geliştirme konuları hakkında daha fazla içerik için beni takip edebilirsiniz.


Ücretli işbirliği için bana şu adresten e-posta gönderin: [email protected]


Twitter , LinkedIn , YouTube ve GitHub'da bana ulaşın.


Okuduğunuz için teşekkürler :)

Teşekkür ederim