を読み取ることができない私は、InstagramのAPIにPOSTリクエストを送信するためにAxiosを使用しています:POST APIへのオブジェクトが、APIはそれを
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);
});
これは、InstagramのAPIのドキュメント(https://www.instagram.com/developer/authentication/)で与えられた例を以下の:
// 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
ただし、次のエラーが返されます。
data: {
code: 400,
error_type: 'OAuthException',
error_message: 'You must provide a client_id'
}
私はクロームポストマンを使用して、私は何の問題もありません。私は認証トークンを受け取ります。だから明らかにAPIは私が送信しているものを読んでいないのですが、私は理由を理解できません。私は私のヘッダーを設定しました:
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();
});
も私もhttp://jsonplaceholder.typicode.com/に同じPOSTを行い、予想通り、私は正しい応答を受け取ります。
私は間違っていますか?
EDIT:
私はちょうど私がクロームポストマンを使用する場合、それだけx-www-form-urlencodedで設定して働くことに気づきました。私はJSONと他の多くの方法でそれを送信しようとしましたが、私は以下に述べるのと同じエラーを受け取ります。
** application/x-www-form-urlencoded **の代わりに** application/json **を使用しますか? – TommyLike
それを試してもうまくいかなかった。 – jro
アプリケーション/ x-www-form-urlencodedは、フォームデータを送信するために使用されます。 Instagram APIを簡単に見て、クエリ文字列を送信したい - 実際のURLにパラメータを追加する。 https://api.instagram.com/oauth/access_token?client_id = zzz&client_secret = zzz ... – razakj