这是一个用于与谷歌日历交互的服务器端项目,支持创建、读取、更新和删除日历事件,还能查找空闲时间段。项目使用 Node.js 编写,并通过 OAuth 2.0 进行身份验证。
本项目是用于与谷歌日历交互的服务器端项目,支持对日历事件的 CRUD 操作以及查找空闲时间段。使用 Node.js 编写,通过 OAuth 2.0 进行身份验证。
在项目根目录中运行以下命令:
npm install
复制 .env.example
文件为 .env
,并根据实际情况填写以下内容:
CLIENT_ID=你的客户端ID
CLIENT_SECRET=你的客户端密码
REDIRECT_URI=重定向链接地址(例如:http://localhost:3000/oauth2callback)
REFRESH_TOKEN=获取的刷新令牌
npm run start:http
http://localhost:3334
。npm run start:stdio
{
"summary": "会议",
"description": "重要项目讨论会",
"start": {
"dateTime": "2023-10-10T09:00:00+08:00"
},
"end": {
"dateTime": "2023-10-10T11:00:00+08:00"
}
}
const { google } = require('googleapis');
const http = require('http');
const url = require('url');
// 替换为你的实际信息
const CLIENT_ID = '你的客户端ID';
const CLIENT_SECRET = '你的客户端密码';
const REDIRECT_URI = 'http://localhost:3000/oauth2callback';
const oauth2Client = new google.auth.OAuth2(
CLIENT_ID,
CLIENT_SECRET,
REDIRECT_URI
);
const scopes = [
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.events'
];
function getRefreshToken() {
const server = http.createServer(async (req, res) => {
const queryParams = url.parse(req.url, true).query;
if (queryParams.code) {
try {
const { tokens } = await oauth2Client.getToken(queryParams.code);
console.log('刷新令牌:', tokens.refresh_token);
res.end('身份验证成功!你可以关闭此窗口。');
server.close();
} catch (error) {
console.error('获取令牌失败:', error);
res.end('身份验证失败!');
}
}
}).listen(3000, () => {
const authUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: scopes,
prompt: 'consent'
});
console.log('在浏览器中打开以下链接:');
console.log(authUrl);
});
}
getRefreshToken();
npm run dev
本项目的使用遵循 ISC 协议。