ich Axios bin mit einer POST-Anfrage an die API Instagram senden:POST-Objekt-API, aber API kann es nicht lesen
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
axios.post('https://api.instagram.com/oauth/access_token', {
client_id: 'zzz',
client_secret: 'zzz',
grant_type: 'authorization_code',
redirect_uri: 'http://localhost:8080/oauth2',
code: 'zzz',
}).then(function(res) {
console.log("response ", res);
})
.catch(function(err) {
console.log("err ", err);
});
Dieses Beispiel der Instagram API-Dokumentation (https://www.instagram.com/developer/authentication/) gegeben folgt :
// curl -F 'client_id=CLIENT_ID' \
// -F 'client_secret=CLIENT_SECRET' \
// -F 'grant_type=authorization_code' \
// -F 'redirect_uri=AUTHORIZATION_REDIRECT_URI' \
// -F 'code=CODE' \
// https://api.instagram.com/oauth/access_token
wird jedoch der folgende Fehler zurückgegeben:
data: {
code: 400,
error_type: 'OAuthException',
error_message: 'You must provide a client_id'
}
Wenn ich Chrome Postman verwenden, ich habe kein Problem; Ich erhalte ein Autorisierungs-Token. Also offensichtlich liest die API nicht, was ich sende, aber ich kann nicht herausfinden warum. Ich habe meinen Header gesetzt:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(function(req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, accept, authorization');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
Auch ich habe sogar die gleichen POST http://jsonplaceholder.typicode.com/ und wie erwartet, erhalte ich die richtige Antwort.
Irgendwelche Ideen, was ich falsch machen könnte?
EDIT:
Ich habe gerade bemerkt, dass, wenn ich Chrome Postman verwenden, ist es nur mit der x-www-form-urlencoded Einstellung funktioniert. Ich habe versucht, es mit JSON und einer Reihe von anderen Möglichkeiten zu senden, aber ich erhalte den gleichen Fehler wie unten angegeben.
verwenden ** application/json ** anstelle von ** application/x-www-form-urlencoded **? – TommyLike
Versuchte das und es hat nicht funktioniert. – jro
Anwendung/x-www-Form-urlencoded wird zum Senden von Formulardaten verwendet. Nur durch einen kurzen Blick auf Instagram-API möchten Sie Abfrage String senden - Hinzufügen von Parametern zu tatsächlichen URL dh. https: //api.instagram.com/oauth/access_token? client_id = zzz & client_secret = zzz ... – razakj