2

J'ai suivi les instructions in this great post pour configurer la liaison de compte entre le serveur de mon application et les actions google.Actions Google - L'accès à l'API Calendar avec le jeton d'accès échoue

Dans le processus d'autorisation, j'ai demandé l'autorisation de portée "https://www.googleapis.com/auth/calendar".

j'ai réussi à obtenir le jeton auth sur mon serveur en appelant

app.getUser().accessToken 

Mais quand je fais une demande à googleapi calendrier, en utilisant ce morceau de code:

const google = require('googleapis'); 
var calendar = google.calendar('v3'); 

var eventData = { 
    auth: myAuthToken, 
    calendarId: 'primary', 
    resource: { 
     'summary': 'My Event', 
     'description': 'Event desc', 
     'start': { 
      'dateTime': '2017-06-11', 
     }, 
     'transparency': 'transparent', 
     'visibility': 'private', 
     'colorId': 'blue' 
    } 
}; 

calendar.events.insert(eventData, 
    function(err, event) { 
    if (err) { 
     console.log(err) 
    } 
}); 

Je reçois est ce erreur:

{ Error: Login Required 
    at Request._callback (\node_modules\google-auth-library\lib\transporters.js:85:15) 
    at Request.self.callback (\node_modules\request\request.js:188:22) 
    at emitTwo (events.js:106:13) 
    at Request.emit (events.js:191:7) 
    at Request.<anonymous> (\node_modules\request\request.js:1171:10) 
    at emitOne (events.js:96:13) 
    at Request.emit (events.js:188:7) 
    at IncomingMessage.<anonymous> (\node_modules\request\request.js:1091:12) 
    at IncomingMessage.g (events.js:291:16) 
    at emitNone (events.js:91:20) 
    code: 401, 
    errors: 
    [ { domain: 'global', 
     reason: 'required', 
     message: 'Login Required', 
     locationType: 'header', 
     location: 'Authorization' } ] } 

Existe-t-il d'autres étapes d'authentification que je devrais suivre?

+0

Peut-être est lié à cette question? https://developers.google.com/identity/protocols/googlescopes Les applications accessibles au public ayant accès à certaines données utilisateur doivent être validées. Si vous voyez une erreur d'accès pour votre application, envoyez une demande en utilisant notre formulaire OAuth Developer Verification ..... – Lizozom

Répondre

1

Je pense que le problème est que la structure de ce que vous utilisez comme paramètre auth n'est pas correcte. Vous lui passez un jeton de chaîne, alors que ce devrait être un objet OAuth2. Voir https://github.com/google/google-api-nodejs-client#making-authenticated-requests pour plus de détails, mais en bref, vous devrez:

  1. Créer un objet OAuth2

var OAuth2 = google.auth.OAuth2; 
var oauth2Client = new OAuth2(
    YOUR_CLIENT_ID, 
    YOUR_CLIENT_SECRET, 
    YOUR_REDIRECT_URL 
); 
  1. Définir les informations d'identification (le jeton d'accès).

oauth2Client.setCredentials({ 
    access_token: 'ACCESS TOKEN HERE' 
}); 
  1. Utilisez cet objet oauth2Client dans le paramètre auth dans vos données d'événement/appel.

var eventData = { 
    auth: oauth2Client, 
    ... 
}; 
+0

Les informations d'Oauth sont-elles les mêmes que celles que j'ai placées dans le compte API.AI? Ou est-ce d'un endroit différent? @ Prisoner – Lizozom

+0

Oui, ces valeurs doivent être identiques à celles que vous avez spécifiées lors de la configuration de vos informations OAuth. – Prisoner

+0

Ça a marché. Merci! – Lizozom