Valider les données du formulaire avec axios dans Node.js
Je suis à l'essai à la Uber API pour le Facteur, et je suis en mesure d'envoyer une demande avec le formulaire de données avec succès. Lorsque je tente de traduire cette demande de l'aide Node.js et l'axios bibliothèque, j'obtiens une erreur.
Voici ce que mon Facteur requête ressemble à:
La réponse que je reçois est: { "error": "invalid_client" }
Ici est ce que je fais dans Node.js et axios:
var axios = require("axios");
const config = { headers: { 'Content-Type': 'multipart/form-data' } };
axios.post('https://login.uber.com/oauth/v2/token', {
client_id: '***',
client_secret: '***',
grant_type: 'authorization_code',
redirect_uri: 'http://localhost:8080/',
code: '***'
}, config)
.then(function(response) {
console.log(response.data)
})
.catch(function(error) {
console.log(error)
})
Quand je fais cela, je reçois un 400 de réponse.
J'ai ajouté le 'multipart/form-data'
en-tête parce que j'ai rempli le formulaire de données dans le Facteur de la demande. Sans l'en-tête j'obtiens le même résultat.
Je m'attends à recevoir la même réponse que je reçois de Facteur, il ya quelque chose de mal avec ma config variable dans le Node.js script?
Toute aide serait appréciée!
Invalid Client
erreur.Avez-vous essayé de transmettre les données à l'aide de
querystring.stringify
? Comme ceci: var querystring = require('querystring'); axios.post('http://something.com/', querystring.stringify({ foo: 'bar' });
envelopper les données dans la chaîne de requête module n'a pas aidé à me sortir cette fois...
OriginalL'auteur Mike | 2017-01-20
Vous devez vous connecter pour publier un commentaire.
Vous pourriez être en mesure d'utiliser
Content-Type: 'application/x-www-form-urlencoded'
. J'ai rencontré un problème similaire avechttps://login.microsoftonline.com
où elle était incapable de s'occuper de l'arrivéeapplication/json
.Vous pouvez également utiliser une fonction pour gérer la traduction de formUrlEncoded comme
Cela a fonctionné pour moi aussi! Merci!!!!
A travaillé pour moi aussi, un grand merci!
OriginalL'auteur Reid Evans
Que le 10 juin 2017,
axios
bibliothèque ne prend pas en charge l'affichage des données de formulaire dans Node.js. Voici la question sur GitHub - https://github.com/mzabriskie/axios/issues/789Nous avons eu le même problème et a décidé de passer à
request
bibliothèque.OriginalL'auteur anuveyatsu
De l'erreur, il semble que votre client_id ou client_secret est incorrect. Activer le débogage et de partager la crue de demande/réponse (après filtrage des informations d'identification).
OriginalL'auteur Dustin Whittle
Il n'est pas vrai! Vous pouvez publier des données avec axios à l'aide de nodejs. Je l'ai fait. Le problème est que si vous utilisez PHP côté serveur, il y a un piège, vous devez être conscient de. Axios postes des données au format JSON (Content-Type: application/json) de PHP standard de $_POST tableau n'est pas remplie lors de ce type de contenu est utilisé. De sorte qu'il sera toujours vide. Afin d'obtenir des paramètres post envoyé par l'intermédiaire d'un json demande, vous devez utiliser file_get_contents("http://php://input") .
Un simple script PHP côté serveur serait:
Utilisant cette méthode, vous pouvez éviter le formData de dépendance. Vous PEUT publier des données directement à partir de node.js.
OriginalL'auteur salihcenap