Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

google.calendar('v3').events.list finds no entries in public calendars #586

Closed
hesst opened this issue May 27, 2016 · 1 comment
Closed
Assignees

Comments

@hesst
Copy link

hesst commented May 27, 2016

events.list finds no entries in public calendars.
I have the calandar with id de.german#holiday@group.v.calendar.google.com in my calendarlist. events.list for this id returns with error: Not Found.
For the calandar with id #contacts@group.v.calendar.google.com comes no error but no entries.

`var fs = require('fs');
var readline = require('readline');
var google = require('googleapis');
var googleAuth = require('google-auth-library');

// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/calendar-nodejs-quickstart.json
var SCOPES = ['https://www.googleapis.com/auth/calendar.readonly'];
var TOKEN_DIR = '';
var TOKEN_PATH = TOKEN_DIR + 'authToken.json';

// Load client secrets from a local file.
fs.readFile('client_secret.json', function processClientSecrets(err, content) {
if (err) {
console.log('Error loading client secret file: ' + err);
return;
}
// Authorize a client with the loaded credentials, then call the
// Google Calendar API.
authorize(JSON.parse(content), listCalendars);
});

/**

  • Create an OAuth2 client with the given credentials, and then execute the

  • given callback function.
    *

  • @param {Object} credentials The authorization client credentials.

  • @param {function} callback The callback to call with the authorized client.
    */
    function authorize(credentials, callback) {
    var clientSecret = credentials.installed.client_secret;
    var clientId = credentials.installed.client_id;
    var redirectUrl = credentials.installed.redirect_uris[0];
    var auth = new googleAuth();
    var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);

    // Check if we have previously stored a token.
    fs.readFile(TOKEN_PATH, function(err, token) {
    if (err) {
    getNewToken(oauth2Client, callback);
    } else {
    oauth2Client.credentials = JSON.parse(token);
    callback(oauth2Client);
    }
    });
    }

/**

  • Get and store new token after prompting for user authorization, and then
  • execute the given callback with the authorized OAuth2 client.
    *
  • @param {google.auth.OAuth2} oauth2Client The OAuth2 client to get token for.
  • @param {getEventsCallback} callback The callback to call with the authorized
  • client.
    
    */
    function getNewToken(oauth2Client, callback) {
    var authUrl = oauth2Client.generateAuthUrl({
    access_type: 'offline',
    scope: SCOPES
    });
    console.log('Authorize this app by visiting this url: ', authUrl);
    var rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
    });
    rl.question('Enter the code from that page here: ', function(code) {
    rl.close();
    oauth2Client.getToken(code, function(err, token) {
    if (err) {
    console.log('Error while trying to retrieve access token', err);
    return;
    }
    oauth2Client.credentials = token;
    storeToken(token);
    callback(oauth2Client);
    });
    });
    }

/**

  • Store token to disk be used in later program executions.
    *
  • @param {Object} token The token to store to disk.
    */
    function storeToken(token) {
    try {
    fs.mkdirSync(TOKEN_DIR);
    } catch (err) {
    if (err.code != 'EEXIST') {
    throw err;
    }
    }
    fs.writeFile(TOKEN_PATH, JSON.stringify(token));
    console.log('Token stored to ' + TOKEN_PATH);
    }

var listCalendars = function(auth)
{
var api = google.calendar('v3');
api.calendarList.list({
auth: auth
}, function(err, response)
{
if (err)
{
console.log('The API returned an error: ' + err);
}
else
{
var calendars = response.items;
if (calendars.length > 0)
{
calendars.forEach(function(calendar)
{
listUpcomingEvents(calendar.id, auth)
});
}
}
});
}

function listUpcomingEvents(id, auth)
{
var api = google.calendar('v3');
api.events.list({
auth: auth,
calendarId: id
}, function(err, response)
{
console.log("==>", id);
if (err)
{
console.log(err, id);
}
else
{
if (!response.items || response.items.length == 0)
{
console.log('No upcoming events found.');
}
else
{
for (var e in response.items)
{
console.log("---------------------------");
console.log(response.items[e]);
}
}
}
});
}`

Result:
`==> #contacts@group.v.calendar.google.com
No upcoming events found.
==> de.german#holiday@group.v.calendar.google.com
{ [Error: Not Found]
code: 404,
errors: [ { domain: 'global', reason: 'notFound', message: 'Not Found' } ] } 'de.german#holiday@gr
==> e_2_de#weeknum@group.v.calendar.google.com
{ [Error: Not Found]
code: 404,
errors: [ { domain: 'global', reason: 'notFound', message: 'Not Found' } ] } 'e_2_de#weeknum@group

==> my primary callendar id

... all my entrys in my primary callendar

==> another not public callendar id

... all entrys in this callendar

`

@hesst
Copy link
Author

hesst commented May 27, 2016

with
calendarId: encodeURIComponent(id)
in event.list all works fine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant