Почему при попытке связаться с календарем появляется ошибка «требуется логин»? - PullRequest
0 голосов
/ 02 октября 2018

Я использую Календарь Google API.Почему я получаю это сообщение об ошибке в приведенном ниже сценарии?

При обращении к календарю произошла ошибка: требуется логин

Текущий код:

app.post('/token', function(req, res) {
  var code = req.body.code;
  console.log(code);
  async function asyncCall() {
    const { tokens } = await oauth2Client.getToken(code);
    oauth2Client.setCredentials(tokens);
    console.log(tokens);
  }
  asyncCall();
  oauth2Client.on('tokens', tokens => {
    if (tokens.refresh_token) {
      console.log(tokens.refresh_token);
    }
    console.log(tokens.access_token);
    console.log('Now lets see');
  });
  //
  addEvents();
  function addEvents(auth) {
    var event = {
      summary: 'Google I/O 2045',
      location: '800 Howard St., San Francisco, CA 94103',
      description: "A chance to hear more about Google's 
      developer products.",
      start: {
        dateTime: '2018-10-28T09:00:00-07:00',
        timeZone: 'America/Los_Angeles'
      },
      end: {
        dateTime: '2018-10-28T17:00:00-07:00',
        timeZone: 'America/Los_Angeles'
      },
      recurrence: ['RRULE:FREQ=DAILY;COUNT=2'],
      reminders: {
        useDefault: false,
        overrides: [
          { method: 'email', minutes: 24 * 60 },
          { method: 'popup', minutes: 10 }
        ]
      }
    };

    //console.log(event)

    var calendar = google.calendar('v3');

    calendar.events.insert(
    {
        auth: auth,
        calendarId: 'primary',
        resource: event
    },
    function(err, event) {
        if (err) {
          console.log(
            'There was an error contacting the Calendar 
             service: ' + err
          );
          return;
        }
        console.log('Event created: %s', event.htmlLink);
      }
    );
  }
}); 

1 Ответ

0 голосов
/ 17 июля 2019
  1. В объекте календаря аутентификация должна быть назначена oauth2Client.

  2. Реинжиниринг ваших addEvents ().Вам не нужно определять функцию addEvents с auth в качестве параметра.Также вы должны вернуть события var и назначить его ресурсу.Это должно работать:

app.post('/token', function(req, res) {
  var code = req.body.code;
  console.log(code);
  async function asyncCall() {
    const { tokens } = await oauth2Client.getToken(code);
    oauth2Client.setCredentials(tokens);
    console.log(tokens);
  }
  oauth2Client.on('tokens', tokens => {
    if (tokens.refresh_token) {
      console.log(tokens.refresh_token);
    }
    console.log(tokens.access_token);
    console.log('Now lets see');
  });

    function addEvents() {
    var event = {
      summary: 'Google I/O 2045',
      location: '800 Howard St., San Francisco, CA 94103',
      description: "A chance to hear more about Google's 
      developer products.",
      start: {
        dateTime: '2018-10-28T09:00:00-07:00',
        timeZone: 'America/Los_Angeles'
      },
      end: {
        dateTime: '2018-10-28T17:00:00-07:00',
        timeZone: 'America/Los_Angeles'
      },
      recurrence: ['RRULE:FREQ=DAILY;COUNT=2'],
      reminders: {
        useDefault: false,
        overrides: [
          { method: 'email', minutes: 24 * 60 },
          { method: 'popup', minutes: 10 }
        ]
      }
  return event;
    };

    //console.log(event)

    var calendar = google.calendar('v3');

    calendar.events.insert(
    {
        auth: oauth2Client,
        calendarId: 'primary',
        resource: addEvents()
    },
    function(err, event) {
        if (err) {
          console.log(
            'There was an error contacting the Calendar 
             service: ' + err
          );
          return;
        }
        console.log('Event created: %s', event.htmlLink);
      }
    );
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...