Question

Quelqu'un a-t-il réussi à faire en sorte que le client google-api-nodejs insère avec succès un moment ?

Quoi que j'essaye, j'obtiens une erreur générique 400 "Valeur invalide", mais je ne parviens pas à affiner la valeur invalide car le Explorateur d'API ça ne marche pas non plus.

Serait-ce dû au paramètre data-requestvisibleactions manquant ?J'utilise passeport.js require('passport-google-oauth').OAuth2Strategy pour gérer l'accès oauth, et cette partie fonctionne bien, mais je n'ai aucune idée de comment incorporer requestvisibleactions dans le flux de demande oauth car cela ne provient certainement pas d'un formulaire côté client.

Voici un extrait de ce que j'essaie de faire (en utilisant la dernière version de googleapis, v1.0.2) :

var google = require('googleapis')
var auth = new google.auth.OAuth2()
auth.setCredentials({
  'access_token': user.token
})

google.plus('v1').moments.insert({
  collection: 'vault',
  userId: 'me',
  debug: true,
  resource: {
    type: "http://schemas.google.com/AddActivity",
    target: {
      type: "http://schema.org/CreativeWork",
      url: "...omitted...",
      image: "...omitted...",
      description: "test",
      name: "test"
    }
  },
  auth: auth
}, function (err, response) {
  if (err) {
    console.error(err)
    res.send(err.code, err)
  } else {
    console.log(response)
    res.send(200)
  }
})

réf 1 (obsolète par rapport àune ancienne version de googleapis)

réf 2 (côté client, où l'utilisation d'actions visibles de demande de données est plus évidente)

Était-ce utile?

La solution

Comme vous l'avez spéculé, vous avez besoin du request_visible_actions paramètre dans le cadre de l’URL appelant le point de terminaison oauth.

Il semble que la version actuelle de passeport-google-oauth ne prenne pas en charge ce paramètre.À en juger par plusieurs problèmes ouverts et demandes d'extraction, il n'est pas clair non plus que l'auteur répondra aux demandes d'ajout.Vous avez deux options possibles :

  1. Passez à l'utilisation de la prise en charge OAuth incluse dans google-api-nodejs-client

  2. Corrigez le code passeport-google-oauth.(Et éventuellement soumettre une pull request dans l'espoir qu'elle sera utile à quelqu'un d'autre.)

Je n'utilise pas passeport.js ou le module passeport en question, donc je ne peux pas tester cela, mais sur la base du référentiel github, je pense que vous pouvez insérer ce qui suit dans lib/passport-google-oauth/oauth2.js après la ligne 136 et avant l'instruction return :

if (options.requestVisibleActions) {
  // Space separated list of allowed app actions
  // as documented at:
  //  https://developers.google.com/+/web/app-activities/#writing_an_app_activity_using_the_google_apis_client_libraries
  //  https://developers.google.com/+/api/moment-types/
  params['request_visible_actions'] = options.requestVisibleActions;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top