Mon code (assez simple):
var google = require('googleapis');
var key = require('../../ssl/GoogleAPI/calendar-secret.json');
var auth = new google.auth.JWT(key.client_email, null, key.private_key, ['https://www.googleapis.com/auth/calendar'], null);
var api = google.calendar("v3");
auth.authorize(function (err, tokens) {
if (err) {
console.log(err);
return;
}
api.calendars.insert({
auth: auth,
summary: "test calendar"
}, function (err, resp) {
if (err) {
console.log(err);
}
else {
console.log(resp);
}
})
});
Je reçois une réponse disant :
{ [Error: Missing title.]
code: 400,
errors:
[ { domain: 'global',
reason: 'required',
message: 'Missing title.' } ] }
J'ai essayé de tracer le code et il semble qu'il n'y ait rien dans le corps du POST.
Je ne sais pas si la syntaxe est correcte pour l'objet params
mais j'ai suivi les exemples autant que j'ai pu.
Le document de l'API spécifie que le titre est « résumé » comme dans
POST https://www.googleapis.com/calendar/v3/calendars
{
"summary": "test-cal2"
}
Alors, qu'est-ce que je fais de mal ici ?
En fouillant dans le code, j'ai finalement réussi à faire fonctionner ceci en utilisant :
api.calendars.insert({
auth: auth,
resource: {summary: "test calendar 2"}
}
Où est la doc sur ce truc ?
Ce n'était pas clair du tout...
C'est documenté dans le README https://github.com/google/google-api-nodejs-client#specifying -request-body Comment puis-je être plus clair ?
Je sais que je réponds à un post vieux de 2 ans mais c'est un problème qui persiste.
Il n'y a aucun exemple montrant explicitement comment insérer quelque chose dans l'une de vos API, ou du moins ce n'est pas très visible. C'est la chose la plus importante que vous puissiez ajouter pour améliorer les choses.
Il y a BEAUCOUP plus... mais je n'entrerai pas dans les détails.
cette fonction devrait faire le travail. https://github.com/google/google-api-nodejs-client/blob/master/src/apis/calendar/v3.ts#L662
essayer le test API officiel
https://developers.google.com/google-apps/calendar/v3/reference/calendars/insert#try -it
travaille
Je n'arrive pas à le faire fonctionner aussi.
C'est mon code :
var auth = new googleAuth();
var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
oauth2Client.credentials = JSON.parse(user.calendarToken)
var calendar = google.calendar('v3');
calendar.calendars.insert({
resource : {
summary : req.body.newName
},
auth: auth
},function(err,newCal){
console.log(err) /* => output this { domain: 'global',
reason: 'required',
message: 'Missing title.' }*/
})
Commentaire le plus utile
En fouillant dans le code, j'ai finalement réussi à faire fonctionner ceci en utilisant :
Où est la doc sur ce truc ?
Ce n'était pas clair du tout...