Axios affiche une Error: OAUTH verification failed.
quand j'utilise, "params" dans l'objet axios mais quand je code en dur la demande de publication ça marche bien!
Voici mon objet axios:
const blockKey = req.body.blockKey; { "1sf2f" } const request_data = { url: `http://travel/bookticket?blockKey=${blockKey}`, method: 'post', }; axios({ method: request_data.method, url: request_data.url, headers: { 'Content-Type': 'application/json', ...oauth.oauth.toHeader(oauth.oauth.authorize(request_data)), } }) .then((response) => { res.send(response.data) }) .catch((error) => { res.send(error.response.data) });
Ce qui précède montre une erreur, mais
const blockKey = req.body; // { "blockKey" : "1sf2f" } const request_data = { url: `http://travel/bookticket`, //temp url for Stackoverflow purpose method: 'post', }; axios({ method: request_data.method, url: request_data.url, headers: { 'Content-Type': 'application/json', ...oauth.oauth.toHeader(oauth.oauth.authorize(request_data)), }, params: { blockKey } }) .then((response) => { res.send(response.data) }) .catch((error) => { res.send(error.response.data) });
J'utilise ce pack npm pour l' authentification oAuth 1.0 . S'il vous plaît, aidez, je connais les travaux codés en dur, mais je veux savoir quelle est l'erreur sur les paramètres un!
Remarque: j'ai même essayé d'utiliser "qs" mais cela ne sert à rien
3 Réponses :
Le code ci-dessous est extrait de la documentation officielle axios et a été testé. Documents Axios
axios.get('/user', { params: { ID: 12345 } }) .then(function (response) { console.log(response); }) .catch(function (error) { console.log(error); }) .then(function () { // always executed });
J'ai vérifié cela, et dans mon cas, cela ne fonctionne pas!
Dans le premier cas, vous n'utilisez pas de paire clé: valeur, mais plutôt un objet à l'intérieur d'un bloc. Vous pouvez à la place utiliser un opérateur de propagation pour "blockKey" ou ne pas utiliser block pour la clé "params" et utiliser directement "blockKey".
Vous ne comprenez pas ce que vous dites? pouvez-vous poster un exemple?
@Shivani patel - ce que vous avez posté aurait pu faire un bon commentaire - pour une bonne réponse, pourriez-vous démontrer votre réponse avec un exemple de code s'il vous plaît?
Ce que j'ai écrit avec des mots est clairement démontré par @ evgeni-fotia dans les commentaires de ce post. J'espère que ça t'as aidé. Sinon, je serai heureux d'exemples de code postal.
Le problème est qu'à partir du cas d'erreur, blockKey est un objet et non une chaîne. Il doit s'agir d'une chaîne indiquant comment il est utilisé dans l'objet params. changez-le en chaîne
const blockKey = req.body.blockKey
Ou
const { blockKey } = req.body;
Cela devrait résoudre le problème.
Comme je l'ai mentionné, j'ai utilisé le package qs pour le stringfy! ce n'est pas le problème!
extrait de code postal sur la façon dont vous avez utilisé le package qs.
qs.stringify(req.body)
qui donnera blockKey=1sf2f
si vous enregistrez blockKey après cette affectation, il vous donnera 'blockKey = 12f2f' mais ce que vous voulez, c'est que blockKey soit '12f2f'. qs n'est pas pour ce scénario
Je crois que vous n'avez pas ma question
@samanthas vous voulez passer { blockKey: "sameValue"}
aux paramètres axios mais ce que vous faites est de passer { blockKey: {blockKey: "sameValue"}}
donc la réponse de @urchmaney est correcte
Non, comme je passe dans les paramètres, il ajoute automatiquement à l'URL en tant que pramas! Donc je n'ai pas besoin de me séparer! Comme vous l'avez vu sur le premier exemple que j'ai codé en dur à la fin de l'URL, j'ai divisé
@samantha fait console.log(error.response.request.responseURL)
et vous comprendrez