Google+ Inserisci il momento con il client Nodejs
-
21-12-2019 - |
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)
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:
- .
-
Passa all'utilizzo del supporto OAuth incluso in Google-API-Nodejs-client
-
patch il passaporto-google-oauth code. (E possibilmente inviare una richiesta di tiro nella speranza che sarà utile a qualcun altro.)
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;
}
.