J'ai une application de commerce électronique et j'essaie d'accéder à l'api de repos de paypal, le service "paypal pour les partenaires" en particulier, j'ai lu l'avis de la Commission européenne. Documentation Paypal et c'est tout bon mais le problème est qu'ils ont mentionné l'exemple de requête utilisant curl comme ceci :
curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "client_id:secret" \
-d "grant_type=client_credentials"
Ou
en utilisant postman avec une authentification de base :
-
Nom d'utilisateur : Votre identifiant client.
-
Mot de passe : Votre secret.
j'essaie d'implémenter la même chose mais en utilisant node-fetch depuis node.js
const fetch = require('node-fetch');
function authenticatePaypal() {
fetch('https://api.sandbox.paypal.com/v1/oauth2/token', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Accept-Language': 'en_US',
'client_id': 'secret'
},
body: {
"grant_type": "client_credentials"
}
}).then(reply => {
console.log('success');
console.log(reply);
}).catch(err => {
console.log('error');
console.log(err);
});
}
module.exports = {
authenticatePaypal: authenticatePaypal
};
et j'obtiens cette réponse de 401 Unauthorized :
Response {
size: 0,
timeout: 0,
[Symbol(Body internals)]:
{ body:
PassThrough {
_readableState: [ReadableState],
readable: true,
_events: [Object],
_eventsCount: 2,
_maxListeners: undefined,
_writableState: [WritableState],
writable: false,
allowHalfOpen: true,
_transformState: [Object] },
disturbed: false,
error: null },
[Symbol(Response internals)]:
{ url: 'https://api.sandbox.paypal.com/v1/oauth2/token',
status: 401,
statusText: 'Unauthorized',
headers: Headers { [Symbol(map)]: [Object] } } }
J'ai essayé postman et cela a fonctionné dans postman, je sais qu'il y a quelque chose qui ne va pas dans mon implémentation de node-fetch, c'est la première fois que je m'occupe d'Auth basique au format json.