正在从节点服务器访问 Google 日历 API
Accessing Google Calendar API from Node server
出于某种原因,我很难访问 Google 日历。
我希望能够在我的 Node.js 服务器的日历中添加和删除事件。
我从文档中发现了非常矛盾的信息。
我关注了 - https://developers.google.com/identity/protocols/OAuth2ServiceAccount,它很好地指导了如何获取访问令牌,但最后它似乎只用于访问云端硬盘。
然后我跟着 Google Calendar API v3 Access Not Configured 说你只需要一个 API 密钥,但这看起来好像都是从客户端完成的,所以也许它是不同的?
我也查看了 https://developers.google.com/google-apps/calendar/quickstart/nodejs,但仅对日历进行简单的 API 调用就显得非常复杂。示例代码引用的文件不清楚它们的来源或结构。例如。 var TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';
我将不胜感激关于如何实现这一目标的简单指南。
谢谢
我相信您想使用 Node.js 在日历中添加和删除事件。
关于 quickstart.js
使用日历 API,为了使用日历 API,首先,用户必须使用客户端 ID、客户端密码和依此类推,并在 API 控制台启用日历 API。
下一步,必须使用 client_secret.json
从 Google 检索访问令牌和刷新令牌。 Quickstart 中的大部分 quickstart.js
用于检索它们。 var TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';
包括使用 client_secret.json
检索的访问令牌和刷新令牌。可以从没有过期时间的刷新令牌中检索具有过期时间的访问令牌。在 quickstart.js
,每 运行 个使用刷新令牌的脚本检索访问令牌。
quickstart.js
中除listEvents(auth)
以外的函数用于授权。在 listEvents(auth)
,日历 API 可以通过使用授权检索的访问令牌来使用。
示例脚本
以下示例脚本用于添加和删除事件。这假设 Quickstart 中的步骤 1 和步骤 2 已经完成并且使用 quickstart.js
。
对于Node.js Quickstart sample,它修改了listEvents()
。当您使用此示例脚本时,请复制并粘贴 Node.js Quickstart 示例 并更改 listEvents()
如下,并添加以下 addEvents()
和 removeEvents()
.
function listEvents(auth) {
var calendar = google.calendar('v3');
addEvents(auth, calendar); // Add events
removeEvents(auth, calendar); // Remove events
}
1。添加活动
详细信息为https://developers.google.com/google-apps/calendar/v3/reference/events/insert。
function addEvents(auth, calendar){
calendar.events.insert({
auth: auth,
calendarId: 'primary',
resource: {
'summary': 'Sample Event',
'description': 'Sample description',
'start': {
'dateTime': '2017-01-01T00:00:00',
'timeZone': 'GMT',
},
'end': {
'dateTime': '2017-01-01T01:00:00',
'timeZone': 'GMT',
},
},
}, function(err, res) {
if (err) {
console.log('Error: ' + err);
return;
}
console.log(res);
});
}
2。删除事件
详细信息为https://developers.google.com/google-apps/calendar/v3/reference/events/delete。
function removeEvents(auth, calendar){
calendar.events.delete({
auth: auth,
calendarId: 'primary',
eventId: "#####",
}, function(err) {
if (err) {
console.log('Error: ' + err);
return;
}
console.log("Removed");
});
}
我和你的情况一样。 Google 没有用于 nodejs 客户端 API 的 server-to-server
身份验证的文档。荒谬的。最后我找到了解决方案here。基本上你需要一个服务帐户密钥(通常是 JSON 文件)和 google.auth.JWT
server-to-server OAuth 2.0
客户端。
let google = require('googleapis');
let privatekey = require("./privatekey.json");
// configure a JWT auth client
let jwtClient = new google.auth.JWT(
privatekey.client_email,
null,
privatekey.private_key,
['https://www.googleapis.com/auth/calendar']);
//authenticate request
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
} else {
console.log("Successfully connected!");
}
});
现在只需像这样调用日历 API:
let calendar = google.calendar('v3');
calendar.events.list({
auth: jwtClient,
calendarId: 'primary'//whatever
}, function (err, response) {
});
出于某种原因,我很难访问 Google 日历。
我希望能够在我的 Node.js 服务器的日历中添加和删除事件。
我从文档中发现了非常矛盾的信息。
我关注了 - https://developers.google.com/identity/protocols/OAuth2ServiceAccount,它很好地指导了如何获取访问令牌,但最后它似乎只用于访问云端硬盘。
然后我跟着 Google Calendar API v3 Access Not Configured 说你只需要一个 API 密钥,但这看起来好像都是从客户端完成的,所以也许它是不同的?
我也查看了 https://developers.google.com/google-apps/calendar/quickstart/nodejs,但仅对日历进行简单的 API 调用就显得非常复杂。示例代码引用的文件不清楚它们的来源或结构。例如。 var TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';
我将不胜感激关于如何实现这一目标的简单指南。
谢谢
我相信您想使用 Node.js 在日历中添加和删除事件。
关于 quickstart.js
使用日历 API,为了使用日历 API,首先,用户必须使用客户端 ID、客户端密码和依此类推,并在 API 控制台启用日历 API。
下一步,必须使用 client_secret.json
从 Google 检索访问令牌和刷新令牌。 Quickstart 中的大部分 quickstart.js
用于检索它们。 var TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';
包括使用 client_secret.json
检索的访问令牌和刷新令牌。可以从没有过期时间的刷新令牌中检索具有过期时间的访问令牌。在 quickstart.js
,每 运行 个使用刷新令牌的脚本检索访问令牌。
quickstart.js
中除listEvents(auth)
以外的函数用于授权。在 listEvents(auth)
,日历 API 可以通过使用授权检索的访问令牌来使用。
示例脚本
以下示例脚本用于添加和删除事件。这假设 Quickstart 中的步骤 1 和步骤 2 已经完成并且使用 quickstart.js
。
对于Node.js Quickstart sample,它修改了listEvents()
。当您使用此示例脚本时,请复制并粘贴 Node.js Quickstart 示例 并更改 listEvents()
如下,并添加以下 addEvents()
和 removeEvents()
.
function listEvents(auth) {
var calendar = google.calendar('v3');
addEvents(auth, calendar); // Add events
removeEvents(auth, calendar); // Remove events
}
1。添加活动
详细信息为https://developers.google.com/google-apps/calendar/v3/reference/events/insert。
function addEvents(auth, calendar){
calendar.events.insert({
auth: auth,
calendarId: 'primary',
resource: {
'summary': 'Sample Event',
'description': 'Sample description',
'start': {
'dateTime': '2017-01-01T00:00:00',
'timeZone': 'GMT',
},
'end': {
'dateTime': '2017-01-01T01:00:00',
'timeZone': 'GMT',
},
},
}, function(err, res) {
if (err) {
console.log('Error: ' + err);
return;
}
console.log(res);
});
}
2。删除事件
详细信息为https://developers.google.com/google-apps/calendar/v3/reference/events/delete。
function removeEvents(auth, calendar){
calendar.events.delete({
auth: auth,
calendarId: 'primary',
eventId: "#####",
}, function(err) {
if (err) {
console.log('Error: ' + err);
return;
}
console.log("Removed");
});
}
我和你的情况一样。 Google 没有用于 nodejs 客户端 API 的 server-to-server
身份验证的文档。荒谬的。最后我找到了解决方案here。基本上你需要一个服务帐户密钥(通常是 JSON 文件)和 google.auth.JWT
server-to-server OAuth 2.0
客户端。
let google = require('googleapis');
let privatekey = require("./privatekey.json");
// configure a JWT auth client
let jwtClient = new google.auth.JWT(
privatekey.client_email,
null,
privatekey.private_key,
['https://www.googleapis.com/auth/calendar']);
//authenticate request
jwtClient.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
} else {
console.log("Successfully connected!");
}
});
现在只需像这样调用日历 API:
let calendar = google.calendar('v3');
calendar.events.list({
auth: jwtClient,
calendarId: 'primary'//whatever
}, function (err, response) {
});