У меня были большие проблемы с добавлением событий в календарь Google пользователя после того, как они завершили вход в мое приложение с помощью Google. Как таковых «ошибок» нет, просто все добавленные события видны только в той учетной записи, с которой я зарегистрировался для консоли разработчика Google. (Я, должно быть, делаю что-то глупое, но я действительно новичок в этом и не знаю, что не так).
Я использовал паспорт. js для процесса OAuth. Идея состоит в том, что всякий раз, когда кто-то попадает на маршрут / calendarcreate, он генерирует это событие и добавляет его в свой календарь.
Может ли кто-нибудь помочь мне с добавлением событий в календарь зарегистрированного пользователя, а не в календарь разработчика?
Это код, который я написал для него.
const passport = require("passport");
const {google} = require('googleapis');
const {OAuth2} = google.auth;
const keys = require("../config/keys");
module.exports = app => {
app.get(
"/auth/google",
passport.authenticate("google", {
scope: ["profile", "email","https://www.googleapis.com/auth/calendar","https://www.googleapis.com/auth/calendar.events"]
})
);
app.get(
"/auth/google/redirect",
passport.authenticate("google"),
(req, res) => {
res.redirect("http://localhost:5000/dashboard");
}
);
app.get("/api/current_user", (req, res) => {
console.log(req.session.user);
res.send(req.user);
});
app.get("/api/logout", (req, res) => {
req.logout();
res.redirect("/");
});
app.get("/calendarcreate",(req,res)=>{
var oauth2Client = new OAuth2(
"GOOGLE CLIENT ID FROM DEV CONSOLE",
"GOOGLE CLIENT SECRET","localhost:5000/dashboard"
);
oauth2Client.setCredentials({
refresh_token :
"REFRESH_TOKEN",
access_token :
"ACCESS TOKEN"
})
var event = {
'summary': 'Google I/O 2015',
'location': '800 Howard St., San Francisco, CA 94103',
'description': 'A chance to hear more about Google\'s developer products.',
'start': {
'dateTime': '2020-04-22T09:00:00-07:00',
'timeZone': 'Asia/Kolkata',
},
'end': {
'dateTime': '2020-04-22T17:00:00-07:00',
'timeZone': 'Asia/Kolkata',
},
'reminders': {
'useDefault': false,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
};
var calendar = google.calendar({version : 'v3', auth: oauth2Client});
calendar.events.insert({
auth : oauth2Client,
calendarId: 'primary',
resource: event,
visibility : "public"
}, function(err, event) {
if (err) {
console.log('There was an error contacting the Calendar service: ' + err);
return;
}
console.log('Event created: %s', event.data.htmlLink);
});
})
};