![Search icon](https://hackernoon.imgix.net/search-new.png?w=19&h=19)
Kể từ khi có COVID, lịch trình của tôi dày đặc các cuộc họp thường kỳ, họp nhóm và gọi điện cho khách hàng.
Tuy nhiên, việc lên lịch sự kiện và mời khách là những công việc nhàm chán. Một ngày thứ sáu, sau khi dành quá nhiều thời gian cho những việc này, tôi nghĩ rằng –
Tại sao tôi lại tốn nhiều thời gian vào việc này thế?
Vì vậy, tôi đã nảy ra ý tưởng tạo một Trình lập lịch sự kiện để đơn giản hóa công việc của mình!
Trong bài viết này, tôi sẽ chỉ cho bạn cách tạo ứng dụng Nodejs có thể tạo sự kiện và tự động gửi lời mời qua email với liên kết Google Meet.
Bạn có hào hứng không? Tôi cũng vậy.
Vậy thì không cần phải trì hoãn thêm nữa!
Hãy BẮT ĐẦU!
Để bắt đầu dự án, chúng ta cần thiết lập môi trường Node.js. Vì vậy, hãy tạo một dự án node. Chạy lệnh sau trong Terminal.
npm init -y
Thao tác này sẽ khởi tạo một dự án Node.js mới.
Bây giờ, chúng ta sẽ cài đặt các phụ thuộc cần thiết cho dự án của mình.
npm install express googleapis dotenv
Lệnh này sẽ cài đặt các gói sau:
.env
.
Tiếp theo, chúng ta sẽ tạo một thư mục .env
để lưu trữ an toàn thông tin nhạy cảm như thông tin xác thực API.
//.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
Bây giờ, chúng ta sẽ tạo một tệp index.js
trong thư mục gốc và thiết lập một máy chủ express cơ bản. Xem đoạn mã sau:
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}`); });
Ở đây, chúng tôi sử dụng gói "dotenv" để truy cập số PORT từ tệp .env
.
Ở đầu dự án, chúng ta đang tải các biến môi trường bằng cách sử dụng dotenv.config()
để có thể truy cập được trong toàn bộ tệp.
Đầu tiên, chúng ta sẽ truy cập vào Google Cloud Console .
Sau đó chúng ta sẽ có Dashboard này. (Tôi đã tạo một dự án trước đó nên tôi nhận được Dashboard này, bạn có thể nhận được thứ khác).
Bây giờ, chúng ta sẽ nhấp vào nút 'Dự án mới' để bắt đầu một dự án mới.
Tiếp theo, chúng ta sẽ có thứ gì đó như thế này. Ở đây, chúng ta sẽ thêm tên và tổ chức của Dự án. Đối với dự án này, tôi giữ nguyên là "Mail-integration-Demo." Sau đó, chúng ta sẽ nhấp vào nút tạo để tiếp tục
Tiếp theo, trong thanh điều hướng bên, chúng ta sẽ thấy "API và Dịch vụ". Trong phần này, có một menu phụ để bật API và dịch vụ. Chúng ta sẽ nhấp vào đó để tiếp tục.
Tiếp theo, chúng ta sẽ kích hoạt API mà chúng ta sẽ sử dụng trong dự án này, tức là Google Calender API.
Sau đó, chúng ta sẽ đến Màn hình đồng ý OAuth. Tại đây, chúng ta sẽ chọn Loại người dùng là Bên ngoài. Và chúng ta sẽ nhấn nút Tạo để tiếp tục.
Sau đó, chúng ta sẽ đến trang đăng ký ứng dụng. Tại đây, chúng ta sẽ thêm thông tin về ứng dụng của mình. Chúng ta bắt đầu bằng cách thêm tên ứng dụng và địa chỉ email để hỗ trợ người dùng.
Đối với dự án này, tôi sẽ đặt tên là "Tích hợp thư của Arindam" và sử dụng địa chỉ email của riêng tôi để hỗ trợ.
Tiếp theo, chúng ta phải xác định phạm vi của Ứng dụng.
Trong Phạm vi, chúng tôi sẽ thêm các quyền cần thiết như userinfo.email
và userinfo.profile
cho dự án này.
Sau đó, chúng ta sẽ thêm một người dùng thử nghiệm vào ứng dụng của mình.
Vậy là xong. Ứng dụng của chúng tôi đã được đăng ký với nền tảng.
Bây giờ, chúng ta sẽ tạo bí mật ID máy khách OAuth. Đối với điều đó, chúng ta sẽ chuyển sang phần Tạo thông tin xác thực.
Ở đây, chúng ta sẽ thêm loại ứng dụng và tên của nó. Đối với dự án này, đó là một ứng dụng web và tên của nó là Arindam's Mail Demo.
Ngoài ra, chúng tôi đã thêm một URL chuyển hướng. Đối với dự án này, URL sẽ là http://localhost:8000/auth/redirect
.
Và sau đó chúng ta sẽ nhận được thông tin xác thực OAuth.
Tiếp theo, chúng ta sẽ tạo Khóa API.
Sau khi thực hiện tất cả những điều này, chúng ta sẽ cập nhật tệp .env
bằng khóa API và Thông tin xác thực OAuth mà chúng ta đã tạo trước đó.
Với điều này, chúng tôi đã thiết lập bảng điều khiển Google Cloud cho dự án này, bây giờ hãy chuyển sang phần tiếp theo
Cho đến bây giờ, chúng ta đã hoàn thành thiết lập dự án cơ bản. Bây giờ, chúng ta sẽ tích hợp Xác thực OAuth2 vào Dự án của mình. Điều này cho phép ứng dụng của chúng ta tương tác an toàn với các dịch vụ của Google. Đối với điều đó, trước tiên, chúng ta sẽ nhập các gói cần thiết vào tệp index.js
.
const express = require('express'); const { google } = require('googleapis'); const dotenv = require('dotenv');
Sau đó, chúng tôi sẽ xác định phạm vi truy cập cần thiết cho Google Calendar API.
const scopes = ['https://www.googleapis.com/auth/calendar'];
Tiếp theo, chúng ta sẽ cấu hình máy khách OAuth 2 bằng thông tin xác thực đã lưu trữ trong tệp .env
.
// OAuth 2 configuration const oauth2Client = new google.auth.OAuth2 ( process.env.CLIENT_ID, process.env.CLIENT_SECRET, process.env.REDIRECT_URL );
Sau khi Cấu hình OAuth 2, chúng ta sẽ tạo một Tuyến để Xác thực Người dùng.
app.get('/auth', (req, res) => { const url = oauth2Client.generateAuthUrl ({ access_type: 'offline', scope: scopes }); res.redirect(url); } );
Khi người dùng của chúng tôi đi theo hướng này, họ sẽ được chuyển hướng đến trang xác thực của Google, tại đó họ sẽ yêu cầu cấp các quyền cụ thể cho ứng dụng của chúng tôi.
Sau khi xác thực thành công, Google sẽ chuyển hướng người dùng đến URL chuyển hướng của chúng tôi ( /auth/redirect
)
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.'); } );
Ở đây, chúng ta sẽ lấy mã thông báo làm mới từ Query và lưu trữ chúng dưới dạng thông tin xác thực trong oauth2Client
. Những thông tin xác thực này sẽ giúp chúng ta thực hiện yêu cầu tới Google Calendar API.
Sau đây là mã đầy đủ cho index.js
:
//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.'); } );
Đây là phần quan trọng nhất! Trong phần này, chúng ta sẽ lên lịch sự kiện trên Google Calendar!
Để bắt đầu, chúng ta sẽ khởi tạo ứng dụng khách Google Calendar API.
const calendar = google.calendar({ version: 'v3', auth: oauth2Client });
Tiếp theo, chúng ta sẽ tạo một đối tượng sự kiện trong đó chúng ta sẽ thêm tất cả các chi tiết của sự kiện như Tóm tắt, Địa điểm, Thời gian bắt đầu và kết thúc, v.v.
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' }, };
Sau đó, chúng ta sẽ tạo một Route ( /create-event
) để tạo sự kiện.
Ở đây chúng ta chèn một sự kiện vào Lịch của người dùng bằng phương thức calendar.events.insert()
.
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); } } );
Với điều này, chúng ta có thể lên lịch sự kiện một cách linh hoạt trên Google Calendar.
Cho đến bây giờ, chúng ta đã khám phá cách tạo sự kiện đơn giản trên Google Calendar. Trong phần này, chúng ta sẽ khám phá cách thêm Liên kết Google Meet vào Sự kiện đó!
Đối với điều đó, chúng tôi sẽ cập nhật đối tượng sự kiện mà chúng tôi đã tạo ở phần trước. Chúng tôi sẽ thêm thuộc tính conferenceData
để chỉ định yêu cầu tạo cho liên kết Google Meet.
conferenceData: { createRequest: { requestId: uuid(), } },
Chúng tôi cũng sẽ thêm thuộc tính attendees
để mời khách đến Sự kiện. Sau đây là một ví dụ đơn giản về điều đó:
attendees: [ {email: '[email protected]'}, ]
Bây giờ, đối tượng Sự kiện trông như thế này:
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]'}, ] };
Tiếp theo, trong bước chèn sự kiện, chúng ta sẽ thêm tham số conferenceDataVersion
vào đó.
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1, resource: event });
Thao tác này sẽ tạo Sự kiện với Liên kết Google Meet. Chúng ta cũng có thể chia sẻ liên kết dưới dạng phản hồi như sau:
res.send({ status: 200, message: 'Event created', link: result.data.hangoutLink });
Vậy là chúng ta đã gần hoàn thành dự án, chỉ còn lại khâu hoàn thiện cuối cùng. Cho đến bây giờ, dự án của chúng ta sẽ trực tiếp thêm sự kiện vào lịch của khách mời.
Tuy nhiên, để thông báo cho họ về những sự kiện này, chúng ta phải gửi một Mail. Để làm được điều đó, chúng ta phải thêm một tham số sendUpdates: 'all',
vào phần tạo sự kiện. Với tham số này, ứng dụng sẽ tự động gửi email đến những khách được mời.
const result = await calendar.events.insert({ calendarId: 'primary', auth:oauth2Client , conferenceDataVersion: 1 , sendUpdates: 'all', resource: event });
Với sự bổ sung này, dự án của chúng tôi hiện có thể xử lý liền mạch cả việc tạo sự kiện và thông báo qua email.
Phần mã hóa của dự án đã hoàn tất. Bây giờ, chúng ta hãy xem nó có hoạt động hay không!
Để làm được điều đó, chúng ta sẽ bắt đầu dự án!
npm run start
Và chúng tôi đã khởi động Server của mình trên cổng 8000! Bây giờ, chúng tôi sẽ đi đến tuyến http://localhost:8000/auth/ để xác thực người dùng. Nó sẽ chuyển hướng chúng tôi đến một cái gì đó như thế này:
Nó sẽ yêu cầu một số quyền cho ứng dụng.
Nó sẽ chuyển hướng đến tuyến đường /auth/redirect
với tham số truy vấn code
.
Sau khi xác thực người dùng thành công, chúng ta sẽ chuyển đến tuyến đường http://localhost:8000/create-event để lên lịch Sự kiện.
Tuyệt vời! Điều đó có nghĩa là sự kiện của chúng tôi được tạo bằng liên kết Google Meet.
Để xác minh rằng quy trình tạo sự kiện đang hoạt động chính xác, hãy kiểm tra Google Calendar của chúng tôi
Thật tuyệt vời! Sự kiện của chúng tôi đã được tạo, điều đó có nghĩa là tuyến đường tạo Sự kiện đang hoạt động hoàn hảo! Và chúng tôi cũng nhận được thư Mời:
Tuyệt vời! Ứng dụng của chúng tôi hoạt động hoàn hảo!
Với điều đó, chúng tôi đã tích hợp Google Calendar vào ứng dụng Node.js của mình. Trong các bài viết sau, chúng tôi sẽ khám phá thêm các trường hợp sử dụng với Google Calendar.
Cho đến lúc đó, hãy chú ý theo dõi!
Nếu bạn thấy bài đăng trên blog này hữu ích, vui lòng cân nhắc chia sẻ với những người khác có thể hưởng lợi. Bạn cũng có thể theo dõi tôi để biết thêm nội dung về Javascript, React và các chủ đề Phát triển web khác.
Để được cộng tác có trả phí, hãy gửi email cho tôi theo địa chỉ: [email protected]
Kết nối với tôi trên Twitter , LinkedIn , YouTube và GitHub .
Cảm ơn bạn đã đọc :)