Как добавить события для пользователя, который успешно вошел в систему с помощью Google, в мое приложение MERN Stack? - PullRequest
1 голос
/ 22 апреля 2020

У меня были большие проблемы с добавлением событий в календарь 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);
  });
  })
};

1 Ответ

0 голосов
/ 22 апреля 2020
  • Создайте oauth2Client следующим образом
const oauth2Client = new google.auth.OAuth2(
  YOUR_CLIENT_ID,
  YOUR_CLIENT_SECRET,
  YOUR_REDIRECT_URL
);
  • Вам не нужно setCredentials для вашего дела
  • Вместо этого определите службу календаря как var calendar = google.calendar({version : 'v3', auth: oauth2Client}); с oauth2Client, как определено выше
  • Затем используйте calendar.events.insert({... без указания auth во второй раз

  • Найдите дополнительную информацию для создания API Google Node.js Клиент здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...