Domanda

Qualcuno è stato in grado di ottenere il client di Google-API-Nodejs per inserire correttamente un momento?

Qualunque cosa ci provo, ottengo un errore generico 400 "valore non valido" ma non riesco a restringere il valore non valido perché Explorer API non funziona neanche.

Sarebbe dovuto al parametro DATA-Richiesta dati mancanti Sto usando il require('passport-google-oauth').OAuth2Strategy di Passport.js per la gestione dell'accesso di OAuth, e quella parte funziona bene, ma non ho idea di come incorporare voci divisibleactions nel flusso di richiesta OAuth dal momento che questo non è sicuramente proveniente da una forma di clienti.

Ecco uno snippet di quello che sto cercando di fare (usando l'ultima versione di 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)
  }
})
.

Ref 1 < / A> (OUT-OF-DATE WRT una versione precedente di googleapis)

Rif 2 (lato client, dove l'uso di dati-resevisionamenti di dati è più ovvio)

È stato utile?

Soluzione

Come hai specificato, è necessario il parametro request_visible_actions come parte dell'URL che chiama l'endpoint OAuth.

Sembra che la versione corrente del passaporto-google-oauth non supporti questo parametro. A giudicare da diversi problemi aperti e tira le richieste, non è chiaro che l'autore risponderà alle richieste di aggiungerlo. Hai due opzioni possibili:

    .
  1. Passa all'utilizzo del supporto OAuth incluso in Google-API-Nodejs-client

  2. patch il passaporto-google-oauth code. (E possibilmente inviare una richiesta di tiro nella speranza che sarà utile a qualcun altro.)

  3. Non uso Passport.js o il modulo Passport in questione, quindi non posso testarlo, ma in base al repository GitHub, penso che tu possa inserire il seguente in lib / passaporto-google-oauth / oauth2.js dopo Linea 136 e prima dell'istruzione di ritorno:

    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;
    }
    
    .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top